r - 支持向量机预测错误

标签 r 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有同样的错误信息。问题是他/她没有使用数据帧。这不是我的问题。
> 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/

相关文章:

r - 如何将堆栈中的栅格图层合并到数据帧 R 中

scikit-learn - 将 scikit-learn SVM 模型转换为 LibSVM

R预测警告

r - 如何使用 R 中不同数据集创建的模型来预测新数据集的结果?

R:使用 nlmrt 寻找新 x 值的解决方案

python - Matplotlib 等同于 ggplot geom_ribbon?

r - Knit chunk 正在从 *.csv 导入记录的子集,与 R 中的代码相同

machine-learning - 哪种分类器可以有效地处理不属于经过训练的类的测试查询?

r - 如何在 R 中进行编码,为什么使用 ' 而不是撇号 (') 以及如何解决它

python - 如何使用python多次训练SVM分类器?