R神经网络包 – net.result显示什么?

使用以下代码,我构建了一个神经网络模型来预测收盘价:

library(neuralnet)myformula <- close ~ High+Low+Open nn_close <- neuralnet(myformula,data=train_,hidden=c(5,3),linear.output=T)nn_close$net.result[[1]]

能否有人解释一下nn_close$net.result[[1]]这行代码的作用?我查看了CRAN文档,但还是不太明白。


回答:

compute()$net.result的结果只包含一个层级,这给出了每个样本属于某个特定类别的概率(在这个例子中)。换句话说,每行的总和大致等于1。在下面的例子中,我使用了这些信息来预测数据验证子集中的类别,并使用table将这些预测值与其真实值进行比较:

# install.packages("neuralnet")library(neuralnet)# 改编自irisdata(iris)iris2 <- irisiris2$setosa <- c(iris2$Species == 'setosa')iris2$versicolor <- c(iris2$Species == 'versicolor')iris2$virginica <- c(iris2$Species == 'virginica')# iris2$Species <- NULL# 训练和验证子集train.samples <- sample(nrow(iris), nrow(iris)*0.5)train <- iris2[train.samples,]valid <- iris2[-train.samples,]# 拟合模型inet <- neuralnet(setosa + versicolor + virginica ~ Sepal.Length + Sepal.Width +   Petal.Length + Petal.Width, train, hidden=3, lifesign="full")# 预测 pred <- compute(inet, valid[,1:4])head(pred$net.result) # 只有一个层级(每个类别的概率)predspp <- factor(c("setosa" , "versicolor", "virginica"))[apply(pred$net.result, MARGIN=1, FUN=which.max)]table(predspp, valid$Species)# predspp      setosa versicolor virginica#   setosa         19          0         0#   versicolor      0         24         4#   virginica       0          2        26

在我的案例中,所有setosa样本都被正确预测。versicolor和virginica分别有2个和4个错误预测。总的来说,验证样本中有92%(69/75 * 100)的预测是正确的。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注