predict函数 R_R语言如何实现神经网络算法?

人工神经网络是一种运算模型,由大量的神经元和它们之间的相互连接构成,每个节点代表一种激励函数,每两个节点之间有通过信号连接的加权值,连接方式、权重、激励函数的不同都会影响神经网络的输出结果。神经网络模型主要用于分类和回归两类问题。R软件中的nnet包可以用来建立单隐藏层的前馈人工神经网络模型,下面将简单介绍一下该软件包的使用方法。

我们用R软件中的nnet包来建立神经网络模型。

首先,安装并加载软件包。

install.packages("nnet")

library(nnet)

8628dee034a883d5f521e4a4aa83b469.png

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)#查看数据集中各变量的属性

a2fb5f395267f607e2abd88218438582.png

0b57b984e38f5ab576bc07409d6fc307.png

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。

3cc8651764fd304276fd9dbad5cfea73.png

根据建立的神经网络模型进行预测。

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)

c52c33d72ec96efa67202d9a2e967d8b.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值