我训练过一位svm模型。我想测试它,但我面临一个错误的预测()函数。为了简单起见,这里我将测试和训练数据分割成非随机的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)预测()中的错误消息是:
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 37This user具有相同的错误消息。问题是,S/他没有使用数据格式。这不是我的问题。
> class(test)
[1] "data.frame"
> class(train)
[1] "data.frame"我不知道为什么会发生这个错误,也不知道它意味着什么。跟踪()和调试(预测)也没有帮助。
发布于 2015-08-15 15:58:26
很难提供解决方案,因为您没有提供数据。但是,我的猜测是,您的测试数据中有64行NA值用于GA或BW。如果使用任何NAs删除行,我认为您的预测将运行:
predict(mysvm, newdata = test[!rowSums(is.na(test)), ])当然,这意味着您不会得到对这些行的任何预测。如何处理这个问题取决于您自己(例如,您可以将丢失的值或任何适合您特定用例的值归责于此)。
发布于 2016-06-12 10:34:22
我用:
model <- svm(y = labels, x = data, ...)
pred <- predict(model, data)一切都很好。
https://stackoverflow.com/questions/32023504
复制相似问题