MATLAB学习笔记_Day07神经网络、决策树和随机森林

学习视频:【零基础教程】老哥:数学建模算法、编程、写作和获奖指南全流程培训!

文章目录

  • 1. 神经网络Matlab编程讲解
    • 1.1 BP神经网络
      • 数据处理:
      • 数据分析:
    • 1.2 RBF神经网络
    • 1.3 GRNN神经网络
  • 2. 决策树和随机森林
  • 3. 随机森林

神经网络的特点是非线性拟合能力超强,如果你的问题非常非线性,而且有足够的数据,可以考虑一下神经网络。

1. 神经网络Matlab编程讲解

1.1 BP神经网络

MATLAB学习笔记_Day07神经网络、决策树和随机森林_第1张图片

防止陷入局部最优解。

MATLAB学习笔记_Day07神经网络、决策树和随机森林_第2张图片
MATLAB学习笔记_Day07神经网络、决策树和随机森林_第3张图片
MATLAB学习笔记_Day07神经网络、决策树和随机森林_第4张图片

简单的网络:
MATLAB学习笔记_Day07神经网络、决策树和随机森林_第5张图片

MATLAB学习笔记_Day07神经网络、决策树和随机森林_第6张图片

MATLAB学习笔记_Day07神经网络、决策树和随机森林_第7张图片

哪一个进度条到头了,就代表着依据这一项准则,神经网络的训练停止。

关于P,T的维度说明:
MATLAB学习笔记_Day07神经网络、决策树和随机森林_第8张图片
对100件商品,从质量,价格,美观性来评价。P[3100] (100个样本,3个参数(指标))
对每一件商品,买还是不买,两种情况。(0,1表示)T[2
100]

实战一下:65年人口数据为例。

数据处理:

MATLAB学习笔记_Day07神经网络、决策树和随机森林_第9张图片MATLAB学习笔记_Day07神经网络、决策树和随机森林_第10张图片
MATLAB学习笔记_Day07神经网络、决策树和随机森林_第11张图片
MATLAB学习笔记_Day07神经网络、决策树和随机森林_第12张图片
MATLAB学习笔记_Day07神经网络、决策树和随机森林_第13张图片

数据分析:

ploterrcorr:

MATLAB学习笔记_Day07神经网络、决策树和随机森林_第14张图片
如果是一个好的预测,那么自相关性图中除了0阶自相关外,其他的自相关系数系数都不应该超过上下置信区间。
MATLAB学习笔记_Day07神经网络、决策树和随机森林_第15张图片

自相关性图中除了0阶自相关外,其他的自相关系数系数都不应该超过上下置信区间。

plotresponse:
MATLAB学习笔记_Day07神经网络、决策树和随机森林_第16张图片
预测值:
MATLAB学习笔记_Day07神经网络、决策树和随机森林_第17张图片

1.2 RBF神经网络

MATLAB学习笔记_Day07神经网络、决策树和随机森林_第18张图片

MATLAB学习笔记_Day07神经网络、决策树和随机森林_第19张图片

MATLAB学习笔记_Day07神经网络、决策树和随机森林_第20张图片

MATLAB学习笔记_Day07神经网络、决策树和随机森林_第21张图片

MATLAB学习笔记_Day07神经网络、决策树和随机森林_第22张图片

决定系数(coefficient ofdetermination),反应了y的波动有多少百分比能被x的波动所描述

有的教材上翻译为判定系数,也称为拟合优度。

拟合优度越大,自变量对因变量的解释程度越高,自变量引起的变动占总变动的百分比高。

MATLAB学习笔记_Day07神经网络、决策树和随机森林_第23张图片

MATLAB学习笔记_Day07神经网络、决策树和随机森林_第24张图片

MATLAB学习笔记_Day07神经网络、决策树和随机森林_第25张图片
数据量太少了,每次的值都会有波动。

1.3 GRNN神经网络

MATLAB学习笔记_Day07神经网络、决策树和随机森林_第26张图片

其他的和上面两个网络都类似了。

2. 决策树和随机森林

MATLAB学习笔记_Day07神经网络、决策树和随机森林_第27张图片

MATLAB学习笔记_Day07神经网络、决策树和随机森林_第28张图片
MATLAB学习笔记_Day07神经网络、决策树和随机森林_第29张图片

MATLAB学习笔记_Day07神经网络、决策树和随机森林_第30张图片
MATLAB学习笔记_Day07神经网络、决策树和随机森林_第31张图片

MATLAB学习笔记_Day07神经网络、决策树和随机森林_第32张图片MATLAB学习笔记_Day07神经网络、决策树和随机森林_第33张图片
MATLAB学习笔记_Day07神经网络、决策树和随机森林_第34张图片
MATLAB学习笔记_Day07神经网络、决策树和随机森林_第35张图片

MATLAB学习笔记_Day07神经网络、决策树和随机森林_第36张图片

MATLAB学习笔记_Day07神经网络、决策树和随机森林_第37张图片

MATLAB学习笔记_Day07神经网络、决策树和随机森林_第38张图片

MATLAB学习笔记_Day07神经网络、决策树和随机森林_第39张图片

MATLAB学习笔记_Day07神经网络、决策树和随机森林_第40张图片
MATLAB学习笔记_Day07神经网络、决策树和随机森林_第41张图片
MATLAB学习笔记_Day07神经网络、决策树和随机森林_第42张图片
在执行代码前:

pydotplus.graphviz.InvocationException: GraphViz’s executables not found win10解决办法

import pandas as pd
import sklearn as sklearn
from sklearn.feature_extraction import DictVectorizer
from sklearn import tree
import pydotplus
from six import StringIO
import joblib
import numpy
from sklearn.preprocessing import StandardScaler


import os
os.environ["PATH"] += os.pathsep + 'R:/Program Files (x86)/Graphviz2.38/bin/'
#后面的地址为自己安装graphviz的bin文件的地址

# pandas 读取 csv 文件,header = None 表示不将首行作为列
data = pd.read_csv('data/test.csv', header=None)
data2 = pd.read_csv('data/testtest.csv', header=None)
# 指定列
data.columns = ['Diet Habits', 'viviparous animal', 'Aquatic animals', 'Can fly','mammal']
data2.columns = ['Diet Habits', 'viviparous animal', 'Aquatic animals', 'Can fly']
# sparse=False意思是不产生稀疏矩阵
# 标准化数据,保证每个维度的特征数据方差为1,均值为0,使得预测结果不会被某些维度过大的特征值而主导
ss = StandardScaler()
# 先用 pandas 对每行生成字典,然后进行向量化
feature = data[['Diet Habits', 'viviparous animal', 'Aquatic animals', 'Can fly']]
feature2 = data2[['Diet Habits', 'viviparous animal', 'Aquatic animals', 'Can fly']]
X_train = ss.fit_transform(feature)
X_test = ss.transform(feature2)
# 打印各个变量
print('show feature\n', feature)
print('show vector\n', X_train)

#print('show vector name\n', vec.get_feature_names())
#print('show vector name\n', vec.vocabulary_)
Y_train = data['mammal']
#print('show vector\n', Y_train)
clf = tree.DecisionTreeClassifier(criterion='entropy')#关键代码
clf.fit(X_train, Y_train)#关键代码
joblib.dump(clf, "train_model.m")
#print(X_test)
#读取模型进行预测
clf2 = joblib.load("train_model.m")
RESULT=clf2.predict(X_test)
print("result=",RESULT)
#输出结果
dot_data = StringIO()
tree.export_graphviz(clf,out_file=dot_data)
graph = pydotplus.graph_from_dot_data(dot_data.getvalue())
graph.write_pdf("test.pdf")

MATLAB学习笔记_Day07神经网络、决策树和随机森林_第43张图片

classificationLearner 

MATLAB学习笔记_Day07神经网络、决策树和随机森林_第44张图片

3. 随机森林

MATLAB学习笔记_Day07神经网络、决策树和随机森林_第45张图片

MATLAB学习笔记_Day07神经网络、决策树和随机森林_第46张图片
MATLAB学习笔记_Day07神经网络、决策树和随机森林_第47张图片

MATLAB学习笔记_Day07神经网络、决策树和随机森林_第48张图片
MATLAB学习笔记_Day07神经网络、决策树和随机森林_第49张图片

你可能感兴趣的:(数学建模,matlab,神经网络,人工智能)