predict.svm中的错误:测试数据与模型不匹配

时间:2014-10-08 19:55:06

标签: r classification svm modeling

我有一个大约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 !

非常欢迎您的想法。

1 个答案:

答案 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)