2012-12-17 80 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)