使用kernlab包的ksvm进行预测有错误

时间:2017-03-01 02:53:07

标签: r predict

我使用ksvm函数来训练数据,但在预测我有错误时,这里是代码:

 svmmodel4 <- ksvm(svm_train[,1]~., data=svm_train,kernel = "rbfdot",C=2.4,
               kpar=list(sigma=.12),cross=5)

警告讯息: 在.local(x,...)中:变量`'常量。无法扩展数据。

pred <- predict(svmmodel4, svm_test[,-1])

eval(expr,envir,enclos)出错:找不到对象'res_var'。

如果我添加响应变量,它可以工作:

pred <- predict(svmmodel4, svm_test)

但是如果添加响应变量,它怎么能“预测”?我的代码出了什么问题?谢谢你的帮助!

完整的代码:

library(kernlab)
svmData <- read.csv("svmData.csv",header=T,stringsAsFactors = F)
svmData$res_var <- as.factor(svmData$res_var)
svm_train <- svmData1[1:2110,]
svm_test <- svmData1[2111:2814,]
svmmodel4 <- ksvm(svm_train[,1]~.,data = svm_train,kernel = "rbfdot",C=2.4, 
              kpar=list(sigma=.12),cross=5)
pred1 <- predict(svmmodel4,svm_test[,-1])

1 个答案:

答案 0 :(得分:0)

您无法从测试数据集中删除“响应”列。您只需将数据水平划分即可,这意味着响应列必须位于您的训练和测试数据集中,甚至在验证数据集中(如果有的话)。

您的功能

pred <- predict(svmmodel4, svm_test)

工作正常,预测函数将获取您的数据,知道您要分解的列,并针对模型测试其余部分。您的训练和测试数据集的列数必须相同,但行数可以不同。