我使用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)
我有三个问题:
上次命令返回错误:
&#39; scale.default(newdata [,object $ scaled,drop = FALSE],center = object $ x.scale $&#34; scaled:center&#34;,&#39;: 中心的长度&#39;必须等于&#39; x&#39;
我有四列 X ,我不知道如何将四维X传递给SVM模型。
非常感谢您的帮助!
答案 0 :(得分:0)
让我试着单独回答你的问题。
您尝试使用1个预测器绘制仅适合的SVM,因此您的分类仅在1维中创建。这基本上只是一条线。这已在this thread中讨论过。
由于尺寸问题,您正在举报错误。在你的模型中,你只构建了1个预测器X1。但是,在创建测试集数据框时,还包括变量X2-X4。当您尝试在此测试集上进行预测时,该函数会标记错误,因为它试图使您的1个预测变量模型适合具有4个预测变量的数据。
更具体地说,错误意味着center = object$x.scale$"scaled:center"
对象的长度为1,而x
有4列。
一种简单的方法是使用公式界面
model&lt; - svm(Kupno~。,data = my_data)
~.
告诉模型在所有数据集中的列上回归。