【发布时间】:2013-11-20 15:57:26
【问题描述】:
我在 R 中使用 neuralnet 根据 17 个输入预测 3 个类别。我有 3 个类:1、0 和 2。我有 2 个文件:培训和测试。训练有64个案例,17个输入,18列输出。
x1 x2 x3 etc... x17 y
-0.002307 0.034095 -0.002733 0 1
0.004461 -0.041385 0.137767 -0.294394 0
-0.25254 -0.094523 0 0.074733 0
-0.25254 -0.094523 0 0.074733 2
等等。总共 64 行用于训练。
测试集与训练数据完全相同(16 行),只是值不同。 我使用的代码
library(neuralnet)
nn <- neuralnet(y ~ x1+x2+x3
+x4+x5+x6+x7+x8+x9+x10+x11+x12+x13+x14+x15+x16+x17,
data=train,lifesign="full", hidden=15, err.fct="ce",
linear.output=FALSE)
an1 <- compute(nn, Test[1:17])
我可以为 nn 训练做预测
prediction (nn)
这为我提供了训练案例集的预测类列 y,但我不能这样做
prediction (an1): error message
Error in matrix(covariate[not.duplicated, ], nrow = nrow.notdupl) :
'data' must be of a vector type
我不完全确定我需要预测,或者计算就足够了。但是我得到的计算结果是:
$net.result
[,1]
[1,] 0.7503498233120
[2,] 0.9982475522024
....
[14,] 0.0007727434740
[15,] 0.9999287879015
我不知道如何解释它。我需要类似的东西
2 1 0
[1,] 0.964182671 0.022183652 0.013633677
[2,] 0.952685528 0.032202528 0.015111944
[3,] 0.966094194 0.021206723 0.012699083..
每个类别的概率分布。
我尝试使用ifelse
At2 <-(ifelse(Train$y==2,"2", ifelse(Train$y==1, "1","0")))
但对于 net.result 仍然得到相同的 1 列。
任何人都可以帮助指出我在这里缺少哪一行以获得我想要的东西?
另外我认为ifelse 没有做我想做的事——根据 17 个输入预测 Y 类。是这样吗?
【问题讨论】:
-
有趣的是,在扫描文档后,我根本看不到计算该包中测试集的预测值的方法。也许尝试不同的神经网络实现?
-
计算和预测呢?只需提供预测数据集,它应该可以工作......
-
@Joran.I 以前是,我现在也在查看包 nnet 并尝试它。那里也有预测功能。但到目前为止,我无法从中得到我想要的。
标签: r neural-network