创建预测时SVM模型错误

时间:2016-06-07 07:05:24

标签: r plot svm prediction

我使用e1071 Package在R中生成VM模型和预测 my_data csv文件示例:

Kupno,X1,X2,X3,X4
0,1,22,1,4.961566871
1,2,18,0,6.316553966
... 10000 lines

我的R代码:

library(e1071)

model <- svm(data = my_data, y = my_data['Kupno'], x = my_data['X1'])
plot(model,data=my_data,fill=TRUE)
index <- 1:nrow(my_data)
testindex <- sample(index, trunc(length(index)/3))
testset <- my_data[testindex,]
trainset <- my_data[-testindex,]
model <- svm(data = my_data, y = my_data['Kupno'], x = my_data['X1'])
prediction <- predict(model, testset)

我有三个问题:

  1. plot命令不会生成任何错误,但也不会显示错误。情节图(my_data)显示正确。
  2. 上次命令返回错误:

    &#39; scale.default(newdata [,object $ scaled,drop = FALSE],center = object $ x.scale $&#34; scaled:center&#34;,&#39;: 中心的长度&#39;必须等于&#39; x&#39;

  3. 的列数
  4. 我有四列 X ,我不知道如何将四维X传递给SVM模型。

  5. 非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

让我试着单独回答你的问题。

  1. 您尝试使用1个预测器绘制仅适合的SVM,因此您的分类仅在1维中创建。这基本上只是一条线。这已在this thread中讨论过。

  2. 由于尺寸问题,您正在举报错误。在你的模型中,你只构建了1个预测器X1。但是,在创建测试集数据框时,还包括变量X2-X4。当您尝试在此测试集上进行预测时,该函数会标记错误,因为它试图使您的1个预测变量模型适合具有4个预测变量的数据。

    更具体地说,错误意味着center = object$x.scale$"scaled:center"对象的长度为1,而x有4列。

  3. 一种简单的方法是使用公式界面

    model&lt; - svm(Kupno~。,data = my_data)

    ~.告诉模型在所有数据集中的列上回归。