首页 文章

创建预测时SVM模型错误

提问于
浏览
0

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

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)

我有三个问题:

  • plot命令不会生成任何错误,但也不会显示错误 . 情节(my_data)的绘图正确显示 .

  • 上次命令返回错误:

'scale.default(newdata [,object $ scaled,drop = FALSE],center = object $ x.scale $“scaled:center”,':'center'的长度必须等于'x'的列数

  • 我有四列X,我不知道如何将四维X传递给SVM模型 .

非常感谢您的帮助!

1 回答

  • 0

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

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

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

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

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

    model < - svm(Kupno~ . ,data = my_data)

    ~. 告诉模型对数据集中的所有列进行回归 .

相关问题