如何用r语言rsnns包建立神经网络

Python012

如何用r语言rsnns包建立神经网络,第1张

不能发链接,所以我复制过来了。

#载入程序和数据

library(RSNNS)

data(iris)

#将数据顺序打乱

iris <- iris[sample(1:nrow(iris),length(1:nrow(iris))),1:ncol(iris)]

#定义网络输入

irisValues <- iris[,1:4]

#定义网络输出,并将数据进行格式转换

irisTargets <- decodeClassLabels(iris[,5])

#从中划分出训练样本和检验样本

iris <- splitForTrainingAndTest(irisValues, irisTargets, ratio=0.15)

#数据标准化

iris <- normTrainingAndTestSet(iris)

#利用mlp命令执行前馈反向传播神经网络算法

model <- mlp(iris$inputsTrain, iris$targetsTrain, size=5, learnFunc="Quickprop", learnFuncParams=c(0.1, 2.0, 0.0001, 0.1),maxit=100, inputsTest=iris$inputsTest, targetsTest=iris$targetsTest)

#利用上面建立的模型进行预测

predictions <- predict(model,iris$inputsTest)

#生成混淆矩阵,观察预测精度

confusionMatrix(iris$targetsTest,predictions)

#结果如下:

#predictions

#targets 1 2 3

# 1 8 0 0

# 2 0 4 0

# 3 0 1 10

以一个二分类问题作为研究对象,图1的混淆矩阵显示了一个分类器可能会遭遇的所有情况,其中列(positive/negative)对应于实例实际所属的类别,行(true/false)表示分类的正确与否(注,这里的混淆矩阵的结构跟[2]中的定义并不一样,但实际说明的问题是一致的)

训练的时候。test数据肯定是不参与,所以默认情况下是NULL,但是加入test数据过后,比如说我已经对train数据迭代了一次了,也就是遍历了一次train的数据集合,这时候,可以测试一些test数据,看看这个模型在test上面的效果怎样。收敛的MLP过程下,每一次迭代整个数据集过后,在test数据集上面的错误率应该是逐渐减少的。所以,我感觉test数据其实就是为了测试当前训练好的模型的效果。