我已经训练了一个支持向量机模型。我想测试它,但我在 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有同样的错误信息。问题是他/她没有使用数据帧。这不是我的问题。
> class(test)
[1] "data.frame"
> class(train)
[1] "data.frame"
我不确定为什么会发生此错误或它意味着什么。 traceback() 和 debug(predict) 也没有帮助。
最佳答案
很难提供解决方案,因为您尚未提供数据。但是,我的猜测是您有 64 行 NA
GA
的值或 BW
在您的测试数据中。如果您删除带有任何 NA 的行,我认为您的预测将运行:
predict(mysvm, newdata = test[!rowSums(is.na(test)), ])
这当然意味着您不会得到这些行的任何预测。您如何处理这取决于您(例如,您可以估算缺失值或任何适合您的特定用例的值)。
关于r - 支持向量机预测错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32023504/