我正在尝试使用在R中使用神经网络包训练的神经网络来预测测试数据集的类(0或1)。
我的数据如下:
火车:
x1 x2 x3 x4 y
0.557 0.6217009 0.4839 0.5606936 0
0.6549 0.6826347 0.4424 0.4117647 1
0.529 0.5744681 0.5017 0.4148148 1
0.6016771 0.5737052 0.3526971 0.3369565 1
0.6353945 0.6445013 0.5404255 0.464 1
0.5735294 0.6440678 0.4385965 0.5698925 1
0.5252 0.5900621 0.4412 0.448 0
0.7258687 0.7022059 0.5347222 0.4498645 1
等等。
测试集看起来与训练数据完全相同,只是使用不同的值(如果需要,我会发布一些样本)。
我使用的代码如下:
> library(neuralnet)
> nn <- neuralnet(y ~ x1+x2+x3+x4, data=train, hidden=2, err.fct="ce", linear.output=FALSE)
> plot(nn)
> compute(nn, test)
网络训练,我可以成功绘制网络,但计算不起作用。当我运行compute时,它给出了以下错误:
Error in neurons[[i]] %*% weights[[i]] : non-conformable arguments
所以基本上我正在尝试训练神经网络以成功分类新的测试数据。
感谢任何帮助。
编辑:
测试对象的样本是:
x1 x2 x3 x4 y
0.5822 0.6591 0.6445013 0.464 1
0.4082 0.5388 0.5384616 0.4615385 0
0.4481 0.5438 0.6072289 0.5400844 1
0.4416 0.5034 0.5576923 0.3757576 1
0.5038 0.6878 0.7380952 0.5784314 1
0.4678 0.5219 0.5609756 0.3636364 1
0.5089 0.5775 0.6183844 0.5462555 1
0.4844 0.7117 0.6875 0.4823529 1
0.4098 0.711 0.6801471 0.4722222 1
我也试过它,y列没有任何值。
答案 0 :(得分:20)
很难说没有对“测试”对象的良好描述,但是你能看出这是否会带来更好的结果:
compute(nn, test[, 1:4])
答案 1 :(得分:7)
我遇到了同样的问题。我把debugonce(neuralnet)
和我发现神经网络从不同大小乘以矩阵。
我解决了使用此函数从测试中删除y列的问题
columns <- c("x1","x2","x3","x4")
covariate <- subset(test, select = columns)
答案 2 :(得分:0)
我知道这是一个老帖子,但我遇到了一个可以帮助将来的人的独特作品。认为这篇文章最适用,因为它会引发同样的错误。
必须将数据集的缩放转换回data.frame以便在compute
中使用#scaled data
scaledData=scale(data)
nn=neuralnet(y~x,data=scaledData[train,])
#this repeatedly failed for me
compute(nn,scaledData[test,])
#this worked
compute(nn,as.data.frame(scaledData)[test,])