在R中使用来自e1071的svm: 我有以下代码:
svm1<-svm(srv~., data=TrainSet,methof='C-classification',probability=TRUE)
pred.svm1<-predict(svm1,data=Test,probability=TRUE)
当esmining pred.svm1我没有看到概率只有分类 具体做法是:
attr(pred.svm1,"probability")
NULL
不知道该怎么办,无论如何我用Google搜索,其他人也有类似的问题,但他们的解决方案对我不起作用。
答案 0 :(得分:1)
属性的正确名称是probabilities
(注意复数)
因此
attr(pred.svm1,"probabilities")
应该有用。
答案 1 :(得分:1)
OP现在有点晚了,但是为了获得测试数据集的预测,你可以使用
pred.svm1 <- predict(svm1, newdata=Test, ...)
不
pred.svm1 <- predict(svm1, data=Test, ...)
将数据集传递给predict
方法的参数称为newdata
,而不是data
。如问题中所述,pred.svm1
将对 training 数据集进行预测,即用于拟合模型的数据。
答案 2 :(得分:1)
在将值插入模型之前,请确保Train
和Test
数据框中的输出变量属于factor
类型。
train$OutputVar <- factor(train$OutputVar)
test$OutputVar <- factor(test$OutputVar)
答案 3 :(得分:0)
我已经成功地使用probability=TRUE
使用了相似的语法很长一段时间,但是你的代码对我不起作用。当我将第二行更改为:
pred.svm1<-predict(svm1,Test,probability=TRUE)
它确实有用(我删除了data=
)。老实说,我不知道为什么。
顺便说一下,你的第一行还有一个类型:methof
应为type
。