我使用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])
答案 0 :(得分:0)
您无法从测试数据集中删除“响应”列。您只需将数据水平划分即可,这意味着响应列必须位于您的训练和测试数据集中,甚至在验证数据集中(如果有的话)。
您的功能
pred <- predict(svmmodel4, svm_test)
工作正常,预测函数将获取您的数据,知道您要分解的列,并针对模型测试其余部分。您的训练和测试数据集的列数必须相同,但行数可以不同。