2017-08-29 28 views
0

RでROC曲線をプロットする必要がありますが、修正方法はわかりません。プロット曲線ROC em R

cctrl2 <- trainControl(method = "cv", number = 10, classProbs = TRUE, savePredictions = TRUE) 
modelNb <- train(Treino[, -5], Treino$TOTAL_PEDIDO, 
     method = "nb", 
     trControl = cctrl2) 
test_class_pred_nb_probs <- predict(modelNb, Teste[, -5], type = "prob") 
roc_nb = plot.roc(Teste[, 2],test_class_pred_nb_probs$alto, col='red') 

しかし、試験テーブルTESTE $ TOTAL_PEDIDOは、4つの値(高規則的、低分)値がアトミックである必要がありROC曲線をプロットを有します。

aux<-Teste[which(Teste$TOTAL_PEDIDO == "alto"),] 
test_class_pred_nb_probs <- predict(modelNb, aux[, -5], type = "prob") 
roc_nb = plot.roc(aux[, 2],test_class_pred_nb_probs$alto, col='red') 

とメッセージを示しています。

Error in sort.list(y) : 'x' must be atomic for 'sort.list' 
Have you called 'sort' on a list? 
+0

を再現性の例投稿してください。https://stackoverflow.com/help/mcve – Calimo

+0

@Calimoを、表には、7,000人以上のタプルを持っています。どうすればテーブルを投稿できますか? – PaulDaigle

+0

すべてを含める必要はありません。小さなサブサンプルを選択してください。 https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-exampleを見て、library()などへの呼び出しを忘れないようにしてください。 – Calimo

答えて

-1
cctrl2 <- trainControl(method = "cv", number = 10, classProbs = TRUE, savePredictions = TRUE) 

modelNb <- train(Treino[, -2], Treino$TOTAL_PEDIDO, 
       method = "nb", 
       trControl = cctrl2) 

test_pred_nb <- predict(modelNb, Teste[, -2]) 
test_pred_nb_probs <- predict(modelNb, Teste[, -2], type = "prob") 
roc_nb = multiclass.roc(Teste[, 2], 
    test_pred_nb_probs$min, 
    add=TRUE, 
    col='blue') 
roc_nb 
rs <- roc_nb[['rocs']] 
plot.roc(rs[[1]]) 

auc(roc_nb) 
+0

変更した内容と必要な理由について、いくつかのコメントを追加すると便利です(あなたも)。 – Calimo

+0

ありがとう、変更はmulticlass.roc関数です。 – PaulDaigle

+0

これは、multlass.rocが計算した6つの曲線のうちの1つだけをプロットしていることを認識してくれることを望みます。 – Calimo

関連する問題