我有一个大约500行和170列的数据框。我试图用e1071包中的svm运行分类模型。分类变量称为“SEGMENT”,一个6级的因子变量。数据框中还有三个其他因子变量,其余的是数字。
data <- my.data.frame
# Split into training and testing sets, training.data and testing.data
.
.
.
fit <- svm(SEGMENT ~ ., data = training.data, cost = 1, kernel = 'linear',
+ probability = T, type = 'C-classification')
模型运行良好。
Parameters:
SVM-Type: C-classification
SVM-Kernel: linear
cost: 1
gamma: 0.0016
Number of Support Vectors: 77
( 43 2 19 2 2 9 )
Number of Classes: 6
Levels:
EE JJ LL RR SS WW
当我尝试在data.testing上测试模型时出现问题,测试结构与训练集一样完全:
x <- predict(fit, testing.data, decision.values = T, probability = T)
然后事情变得相当惊人:
Error in predict.svm(fit, newdata = testing, decision.values = T, probability = T) :
test data does not match model !
非常欢迎您的想法。
答案 0 :(得分:3)
当测试和训练数据中的列不相同时会发生这种情况。 尝试str(training.data)&amp; str(testing.data)除了需要预测的变量之外,它们应该具有相同的变量。 仅包括您希望在svm培训模型中用于预测的那些因素。
例如:
fit <- svm(SEGMENT ~ ., data = training.data[,1:6], cost = 1, kernel = 'linear',
+ probability = T, type = 'C-classification')
x <- predict(fit, testing.data[,1:5], decision.values = T, probability = T)