1、我们用R软件中的nnet包来建立神经网络模型。首先,安装并加载软件包。install.packages("nnet")library(nnet)
2、读取数据集。gyyz_data=read.csv("gyyz.csv",head=T)#读取数据集gyyz_data$is_rise=as.factor(gyyz_data$is_rise)#将目标变量转换成分类数据head(gyyz_data);dim(gyyz_data)#查看数据维度str(gyyz_data)#查看数据集中各变量的属性
3、nnet()函数主要有以下两种形式:第一种:nnet(formula, data, weights, ..., subset, na.action, contrasts = NULL)第二种:nnet(x, y, weights, size, Wts, mask, linout = FALSE, entropy = FALSE, softmax = FALSE, censored = FALSE, skip = FALSE, rang = 0.7, decay = 0, maxit = 100, Hess = FALSE, trace = TRUE, MaxNWts = 1000, abstol = 1.0e-4, reltol = 1.0e-8, ...)其中,第一种形式中的formula表示模型公式,通常为class~.或者class~x1+x2;参数data表示数据集;weights代表各类样本在模型中所占比重,默认值为1;subset用于抽取样本子集。第二种形式中的x表示自变量数据集,y表示目标变量;size表示隐藏层的节点个数,通常为自变量个数的1.2-1.5倍,size为0时表示无隐藏层;rang表示初始权重范围[-rang,rang],一般rang与x的绝对值中的最大值的乘积大约等于1;decay表示模型权重值的衰减精度;maxit是最大迭代次数。nnet()函数的输出结果:又wts(最优权重值)、residuals(训练集的残差值)、convergence(该值为0表示模型没有达到最大迭代次数就停止了;该值为1表示模型迭代过程达到了最大迭代次数,需要增加最大迭代次数以提高模型精度)。#建立神经网络模型nnet_model=nnet(is_rise~.,data=gyyz_data[,-1],decay=5e-4,size=15,rang=0.7)summary(nnet_model)#查看神经网络模型该神经网络模型的输入层、隐藏层、输出层的节点个数分别为:8个、15个、1个,权重共有151个。结果中以i、h、o和数字编号的代号分别表示输入层、隐藏层、输出层的节点。该模型的最终迭代值为34.62。
4、根据建立的神经网络模型进行预测。nnet_pred=predict(nnet_model,gyyz_data缪梨痤刻[,-1],type="class")gyyz_data$nnet_pred=nnet_pred#将预测结果保存到数据集head(gyyz_data)#查看预测结果#预测结果混淆矩阵table(gyyz_data$is_rise,gyyz_data$nnet_pred)