我neuralnet
在 R 中使用基于 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")))
但仍然得到相同的 1 列net.result
。
任何人都可以帮助指出我在这里缺少哪一行来获得我想要的东西?我也认为ifelse
不会做我想做的事——根据 17 个输入预测 Y 类。是这样吗?