我正在使用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 回答
让我试着单独回答你的问题 .
您试图绘制仅适合使用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)
~.
告诉模型对数据集中的所有列进行回归 .