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