我正在尝试训练svm分类器来做预测。当我尝试使用训练模型时,我收到此错误:测试数据与模型不匹配。我不是为什么会这样。这是我的代码
# to prepare the training and testing data
dat = data.frame(x = rbind(tmp1, tmp2), y = as.factor(c(rep(1, 300), rep(-1, 300))))
set.seed(1)
train_ind = sample(seq_len(nrow(dat)), size = 500)
train = dat[train_ind, ]
test = dat[-train_ind, ]
# training and prediction
library('e1071')
svmfit = svm(y ~ ., data = train, kernel ='linear', cost = 10, scale = FALSE)
ypred = predict(svmfit, test)
table(predict=ypred, truth = test$y)
答案 0 :(得分:0)
这个错误背后的原因是我在训练和测试数据中包含了观察的ID,这些数据混淆了svm分类器。观察的ID位于第一列。因此,当我从培训和测试中删除第一列时,它起作用了。
答案 1 :(得分:0)
如果训练数据集中有分类预测变量(独立变量),则测试数据集中只能存在训练数据集中的类别。如果是这样,请检查测试数据集中是否所有类别都存在于训练数据集中。有时SVM会将具有短范围的整数变量假定为绝对变量,例如月份以数字[1:12]表示