楼主: 飞天玄舞6
6770 11

[问答] kernlab包的ksvm预测问题 [推广有奖]

  • 3关注
  • 31粉丝

VIP1

已卖:3014份资源

学科带头人

13%

(VIP/贵宾)十级

24%

TA的文库  其他...

综合文库

威望
0
论坛币
153870 个
通用积分
4226.4633
学术水平
128 点
热心指数
148 点
信用等级
102 点
经验
76635 点
帖子
1502
精华
0
在线时间
1519 小时
注册时间
2013-12-2
最后登录
2025-11-25

楼主
飞天玄舞6 在职认证  发表于 2017-3-1 09:18:11 |AI写论文
20论坛币
  在kernlab包中ksvm进行预测时,检验集必须带有结果变量,那还算什么预测啊,如果真正预测的时候是没有结果变量的,这一点我不知道它为什么这样做,请大神解答!

关键词:kernlab Lab SVM 不知道
strive for the best, prepare for the worst.

沙发
AlexYoung757 在职认证  学生认证  发表于 2017-3-1 10:08:00
大兄弟 你确定是这样吗  我用IRIS集合做的测试 完全没问题
library(kernlab)
data(iris)
rbf <- rbfdot(sigma=0.1)
irismodel <- ksvm(Species~.,data=iris,type="C-bsvc",kernel=rbf,C=10,prob.model=TRUE)
fitted(irismodel)
predict(irismodel, iris[,-5], type="response")

藤椅
数据小宝 学生认证  发表于 2017-3-1 10:55:49
二楼是可以,其他kernlab这个包稳健性很强,所以你predict时预测数据集加上目标变量和不加上目标变量都是一样的结果,你可以自己测试一下
这可能是他的一个bug吧。
我刚才测试了,结果是一样的。

板凳
飞天玄舞6 在职认证  发表于 2017-3-1 11:00:55
AlexYoung757 发表于 2017-3-1 10:08
大兄弟 你确定是这样吗  我用IRIS集合做的测试 完全没问题
library(kernlab)
data(iris)
是的,我也用iris数据做了,可以去掉响应变量,但是我自己的数据还是不行

报纸
飞天玄舞6 在职认证  发表于 2017-3-1 11:02:03
数据小宝 发表于 2017-3-1 10:55
二楼是可以,其他kernlab这个包稳健性很强,所以你predict时预测数据集加上目标变量和不加上目标变量都是一 ...
试了,用iris行,但我的数据还是不行,不知哪儿出错了

地板
数据小宝 学生认证  发表于 2017-3-1 11:03:17
飞天玄舞6 发表于 2017-3-1 11:02
试了,用iris行,但我的数据还是不行,不知哪儿出错了
我用的不是iris,是自己的数据,也可以。。

7
飞天玄舞6 在职认证  发表于 2017-3-1 11:04:29
AlexYoung757 发表于 2017-3-1 10:08
大兄弟 你确定是这样吗  我用IRIS集合做的测试 完全没问题
library(kernlab)
data(iris)
  1. svmmodel4 <- ksvm(svm_train[,1]~., data=svm_train,kernel = "rbfdot",C=2.4,
  2.                    kpar=list(sigma=.12),cross=5)
  3. #Warning message:
  4. #In .local(x, ...) : Variable(s) `' constant. Cannot scale data.
  5. pred <- predict(svmmodel4, svm_test[,-1])
  6. #Error in eval(expr, envir, enclos) : object '问题类别' not found
复制代码
但是用pred <- predict(svmmodel4, svm_test)就行了。

8
ayzzya 发表于 2017-3-1 11:32:50
支持支持,学习了

9
飞天玄舞6 在职认证  发表于 2017-3-1 11:39:05
我又用《机器学习与R语言》的数据letterdata试了一下,但还是必须有响应变量,没有的话会出现Error in eval(expr, envir, enclos) : object 'letter' not found

10
数据小宝 学生认证  发表于 2017-3-1 14:23:23
letter=read.csv(“letter-recognition.data",sep=",",header=FALSE)
colnames(letter)=c("letter","x-box","y-box","width","high","onpix","x-bar","y-bar",
                   "x2bar","y2bar","xybar","x2ybr","xy2br","x-ege","xegvy","y-ege",
                   "yegvx")

library(caret)
set.seed(2014)
intrain=createDataPartition(y=letter$letter,p=0.8,list = FALSE)
letter_train=letter[intrain,]
letter_test=letter[-intrain,]

#kernlab包下的ksvm算法
library(kernlab)
letter_classifer=ksvm(letter~.,data=letter_train,kernel="vanilladot")
#模型评估
letter_pred=predict(letter_classifer,letter_test[,-1])
agreement= letter_pred==letter_test$letter#返回的逻辑值,预测与实际是否相等
table(agreement)
prop.table(table(agreement))
是这个数据集吧,我这里没问题。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-24 14:23