通过一个例子你会更好地理解这一点(我稍微修改了一下,但我从here得到它):
itrain <- iris[sample(1:150, 50),]
itrain$setosa <- c(itrain$Species == 'setosa')
itrain$versicolor <- c(itrain$Species == 'versicolor')
itrain$virginica <- c(itrain$Species == 'virginica')
itrain$Species <- NULL
inet <- neuralnet(setosa + versicolor + virginica ~ Sepal.Length + Sepal.Width +
Petal.Length + Petal.Width, itrain, hidden=3, lifesign="full")
#make a prediction on the training set and then compare to
#inet$net.result[[1]]
predict <- compute(inet, itrain[1:4])
现在看看结果:
head(predict$net.result)
# [,1] [,2] [,3]
#80 0.0167232688257 0.995316738272 -0.011840391533
#112 -0.0008289388986 -0.006814451178 1.007637170495
#17 1.0028534166840 0.004240124926 -0.007115290101
#104 -0.0002256650283 -0.031771967776 1.031855488316
#149 0.0019424886784 0.007205356060 0.990892583485
#82 -0.0061699713404 0.957656929739 0.048564910023
head(inet$net.result[[1]])
# [,1] [,2] [,3]
#80 0.0167232688257 0.995316738272 -0.011840391533
#112 -0.0008289388986 -0.006814451178 1.007637170495
#17 1.0028534166840 0.004240124926 -0.007115290101
#104 -0.0002256650283 -0.031771967776 1.031855488316
#149 0.0019424886784 0.007205356060 0.990892583485
#82 -0.0061699713404 0.957656929739 0.048564910023
我使用compute 使用神经网络模型对训练集进行预测。
如您所见,inet$net.result[[1]] 和 predict$net.result 是相同的。因此,inet$net.result[[1]] 只是对您用于训练模型的数据集的预测(它与 lm 模型的 fit.values 相同)。
根据@sebastianmm 的真正有用的评论,net.result 是一个列表是有原因的。基本上,neuralnet 有一个参数rep,它可以在一次调用中训练多个模型。当rep 大于 1 时,net.result 将大于 1(其他组件(weights、result.matrix、start.weights)也是如此)。