用R中的神经网络计算?

时间:2015-04-28 13:51:16

标签: r neural-network

allClassifiers元组中的所有元组都是1或2 e.g。

    naiveBayesPrediction    knnPred5    knnPred10   dectreePrediction   logressionPrediction    correctClass
    1                       2                1           1                     1                          1
    1                       2                1           1                     1                          1
    1                       2                1           1                     1                          1
    1                       2                1           2                     1                          1

我训练了整体人员

ensembleModel <- neuralnet(correctClass ~ naiveBayesPrediction + knnPred5 + knnPred10 + dectreePrediction + logressionPrediction, data=allClassifiers[ensembleTrainSample,])

但我正试图用它来预测:

compute(ensembleModel, allClassifiers[ensembleTestSample,])$net.result

但是我收到了这个错误:

  

神经元中的错误[[i]]%*%权重[[i]]:不一致的参数

我的火车和测试样品

ensembleTrainSample <- sample(nrow(allClassifiers), nrow(allClassifiers)*0.7)
ensembleTestSample <- (1:nrow(allClassifiers))[!(1:nrow(allClassifiers))%in% ensembleTrainSample]

1 个答案:

答案 0 :(得分:1)

与您的其他问题类似,这是源于矩阵乘法的错误。实质上,以下错误:

  

神经元中的错误[[i]]%*%权重[[i]]:不一致的参数

表示您的矩阵不具有与矩阵乘法匹配的维度。这就像尝试将4x4矩阵乘以10x10矩阵一样。它根本就不起作用。

现在您收到此错误的原因是因为您忽略了文档中的某些内容。如果您查看?compute,您会看到有关covariate参数的以下注释:

covariate   a dataframe or matrix containing the variables 
            that had been used to train the neural network.

这里的关键是 VARIABLES ,而不是整个数据集,也不是分类器变量(你试图预测这个!)。以下是infert数据集的示例。

library(neuralnet)
data(infert)

# fit your neuralnet model
net.infert <- neuralnet(case~parity+induced+spontaneous, infert)

net.pred <- compute(net.infert, infert[,c("case","parity","induced","spontaneous")])
  

神经元中的错误[[i]]%*%权重[[i]]:不一致的参数

但是,如果我只是包含我用来创建模型的变量,那么它可以正常工作。

# no error
net.pred <- compute(net.infert, infert[,c("parity","induced","spontaneous")])