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

问题描述 投票:1回答:1

我使用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])
r predict
1个回答
0
投票

您无法从测试数据集中删除响应列。您只需将数据水平划分即可,这意味着响应列必须位于您的训练和测试数据集中,或者甚至包含在验证数据集中。

您的功能

pred <- predict(svmmodel4, svm_test)

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

© www.soinside.com 2019 - 2024. All rights reserved.