【问题标题】:classification in r neuralnetr神经网络中的分类
【发布时间】: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


【解决方案1】:

在文档中说 compute() 返回结果列表,而 prediction() 采用神经网络拟合模型...所以我猜你正在使用这是错误的方式。

【讨论】:

  • compute() 返回结果列表。什么结果?你的意思是通过使用计算和预测我无法让神经网络做我想做的事情,或者可以通过计算和预测来获得它,但不是以我使用它们的方式?
【解决方案2】:

通过使用 nnet 包,特别是那里的预测功能,我能够得到我想要的东西。

idC <-class.ind(Train$y)
NN1=nnet(Train, idC[Train], size=15, maxit = 200, softmax=TRUE)
predict(NN1, data=Test,type = "class")

非常感谢所有回复! :)

【讨论】:

    猜你喜欢
    • 2019-07-17
    • 1970-01-01
    • 2012-10-08
    • 2018-11-01
    • 1970-01-01
    • 2012-07-15
    • 1970-01-01
    • 1970-01-01
    • 2016-11-22
    相关资源
    最近更新 更多