支持向量机预测错误

Error in svm predict

我训练了一个支持向量机模型。我想测试它,但我在 predict() 函数中遇到错误。为了简单起见,我在这里以非随机 70/30 拆分的方式拆分了测试和训练数据。

library(e1071)

train <- mydata[1:9731, ] 
test  <- mydata[(9731+1):13901, ]

mysvm <- svm(formula = outcome ~ BW + GA, data = train, type = "C-classification", kernel = "linear", gamma = 1, cost = 2)    
predict(mysvm, newdata=test)

来自 predict() 的错误信息是:

Error in names(ret2) <- rowns : 
  'names' attribute [4170] must be the same length as the vector [4106]

数据的头部看起来像...

> head(mydata)
    BW  outcome GA
1 2.00 Survived 34
2 2.81 Survived 41
3 1.85 Survived 35
4 2.23 Survived 32
5 1.21 Survived 34
6 2.91 Survived 37

This user 有相同的错误信息。问题是 s/he 没有使用数据帧。这不是我的问题。

> class(test)
[1] "data.frame"
> class(train)
[1] "data.frame"

我不确定为什么会出现此错误或它意味着什么。 traceback() 和 debug(predict) 也没有帮助。

您没有提供数据,很难提供解决方案。但是,我猜你的测试数据中有 64 行 GABWNA 值。如果您删除带有任何 NA 的行,我认为您的预测将 运行:

predict(mysvm, newdata = test[!rowSums(is.na(test)), ])

这当然意味着您不会得到这些行的任何预测。你如何处理这取决于你(例如,你可以估算缺失值或任何适合你的特定用例的值)。

我使用:

   model <- svm(y = labels, x = data, ...)

   pred <- predict(model, data)

一切都很好。