2015-06-13 48 views
2

我分割了Train數據集和Test數據集。使用rpart包的R中的ROC曲線?

我對R(只有火車集)中的CART(分類樹)使用了一個包rpart。我想用ROCR包進行ROC分析。

變量是`n。使用'(響應變量... 1 =是,0 =否):

> Pred2 = prediction(Pred.cart, Test$n.use) 
Error in prediction(Pred.cart, Test$n.use) : 
    **Format of predictions is invalid.** 

這是我的代碼。什麼是問題?什麼是正確的type"class""prob"

library(rpart) 
train.cart = rpart(n.use~., data=Train, method="class") 

Pred.cart = predict(train.cart, newdata = Test, type = "class") 

Pred2 = prediction(Pred.cart, Test$n.use) 
roc.cart = performance(Pred2, "tpr", "fpr") 

回答

6

ROCR包中的prediction()函數預期的預測「成功」的概率和失敗與成功的觀察因素。爲了獲得你需要前適用predict(..., type = "prob")rpart對象(即"class")。然而,當它返回概率矩陣,每個響應等級一個欄,你需要選擇「成功」級列。

作爲你的榜樣,UNF ortunately,是不可複製的,我使用從rpartkyphosis數據來加以說明:

library("rpart") 
data("kyphosis", package = "rpart") 
rp <- rpart(Kyphosis ~ ., data = kyphosis) 

然後你可以從ROCR應用prediction()功能。在這裏,我使用的樣本內(培訓)的數據,但同樣可以應用於出樣品(測試數據):

library("ROCR") 
pred <- prediction(predict(rp, type = "prob")[, 2], kyphosis$Kyphosis) 

而且你可以想像的ROC曲線:

plot(performance(pred, "tpr", "fpr")) 
abline(0, 1, lty = 2) 

或精度橫過截斷部位:

plot(performance(pred, "acc")) 

或任何由ROCR支持其他的情節和摘要。

ROCR plots

+0

真棒答案!你從哪裏獲得這些知識? – user1700890

+0

什麼是'成功'級?對於'kyphosis'數據集來說,'現在'情況相當明顯,但是如果我們正在處理'a'和'b'結果。哪一個應該被指定爲成功? – user1700890

+0

您的選擇。兩者都可以工作,您可以選擇哪一個更容易解釋。 –

1
library("ROCR") 
Pred.cart = predict(train.cart, newdata = Test, type = "prob")[,2] 
Pred2 = prediction(Pred.cart, Test$n.use) 
plot(performance(Pred2, "tpr", "fpr")) 
abline(0, 1, lty = 2) 

上面的代碼片斷會爲你工作。

瞭解更多詳情請參考鏈接: Classification Trees (R)