如何修复 cbind(1, pred) %*% weights[[num_hidden_layers + 1]] 中的错误:需要数值/复数矩阵/向量参数

How do I fix Error in cbind(1, pred) %*% weights[[num_hidden_layers + 1]] : requires numeric/complex matrix/vector arguments

提问人:melo 提问时间:7/9/2023 最后编辑:Andre Wildbergmelo 更新时间:7/9/2023 访问量:36

问:

我使用 nnet 构建了一个神经网络。当我尝试计算测试数据值时,我得到了以下内容:

cbind(1, pred) %*% weights[[num_hidden_layers + 1]] 中的错误: 需要数值/复数矩阵/向量参数。

Selector 是我试图预测的类。下面的模型工作正常,我能够使用 predict 计算 train.data 上的混淆矩阵来获得预测值。

nn <- nnet(Selector~., data=train.data, size=5, linear.output=F)

当我尝试在test.data上运行计算时,出现上述错误。

test.pred <- compute(nn, test.data[, 1:9])$net.result

以为我需要一个数值矩阵,我转换了test.data,但仍然得到错误。

test.data <- matrix(as.numeric(unlist(test.data)),nrow=nrow(test.data))

下面是我的test.data和结构的示例。列 [,10] 是 Selector 变量。

str(test.data)
 num [1:180, 1:10] 0.791 0.814 0.244 0.349 0.349 ...
 test.data
             [,1] [,2]        [,3]        [,4]       [,5]         [,6]         [,7]       [,8]       [,9] [,10]
  [1,] 0.79069767    1 0.046916890 0.096938776 0.06448461 0.0085427136 0.0099613743 0.66666667 0.32608696     1
  [2,] 0.81395349    0 0.009383378 0.015306122 0.07376649 0.0060301508 0.0040658670 0.78260870 0.69565217     1
  [3,] 0.24418605    1 0.002680965 0.000000000 0.05862237 0.0407035176 0.0087416141 0.40579710 0.30434783     2
  [4,] 0.34883721    1 0.049597855 0.096938776 0.11040547 0.4346733668 0.1465745070 0.33333333 0.39130435     1
  [5,] 0.34883721    1 0.077747989 0.147959184 0.08646800 0.8391959799 0.1707664159 0.65217391 0.67391304     1
  [6,] 0.18604651    1 0.009383378 0.020408163 0.03175379 0.0050251256 0.0040658670 0.17391304 0.21739130     2
  [7,] 0.30232558    1 0.012064343 0.015306122 0.20468979 0.0462311558 0.0142305347 0.60869565 0.52173913     1
  [8,] 0.51162791    1 0.013404826 0.025510204 0.09770396 0.0140703518 0.0113844277 0.44927536 0.28260870     1
  [9,] 0.50000000    1 0.030831099 0.061224490 0.10356619 0.0567839196 0.0128074812 0.50724638 0.52173913     1
 [10,] 0.59302326    1 0.241286863 0.443877551 0.06985833 0.0271356784 0.0341532832 0.50724638 0.19565217     1

在我将 test.data 转换为数值矩阵之前,它是一个带有列标签的数据框,除了 Selector 之外,所有列都是数值的,Selector 是一个具有两个级别的因子。我现在可以尝试什么?

R 神经网络 NNET

评论


答: 暂无答案