2012-12-17 77 views
1

从e1071 R中使用SVM: 我有以下代码:无法计算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 

不知道该怎么办,无论如何,我一直在搜索,其他人也有类似的问题,但他们的解决方案并不适合我。

回答

1

该属性的正确名称是probabilities(注意是复数)

因此

attr(pred.svm1,"probabilities") 

应该工作。

+0

谢谢我改变了代码#SVM SVM1 <-svm(SRV〜。,数据=车组,类型= 'C',概率= TRUE) pred.svm1 <-predict(SVM1,数据=测试,概率=真),然后我键入数据(pred.svm1,“概率”) 并再次得到NULL ...任何想法 –

0

我用相似的语法成功使用probability=TRUE很长一段时间,但是你的代码并不适合我。当我将你的第二行改为:

pred.svm1<-predict(svm1,Test,probability=TRUE) 

它确实有效(我删除了data=)。老实说,我不知道为什么。

顺便说一句,你也有你的第一行O型:methof应该type

+1

它的工作原因是'predict'方法的标准第二个参数是'newdata',而不是'data' 。 –

1

这是一个有点晚了,现在的OP,但要获得对测试数据集的预测,您使用

pred.svm1 <- predict(svm1, newdata=Test, ...) 

pred.svm1 <- predict(svm1, data=Test, ...) 

的参数传递一个数据集的predict方法称为newdata,而不是data。如问题中所述,pred.svm1将给出关于训练数据集的预测,即用于拟合模型的数据。

1

在将值插入模型之前,请确保TrainTest数据框中的输出变量的类型为factor

train$OutputVar <- factor(train$OutputVar) 
test$OutputVar <- factor(test$OutputVar)