2017-08-29 191 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') 

然而,測試表泰斯特$ 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,表中有超過7000元組。我該如何張貼表格? – PaulDaigle

+0

你不需要包含所有這些,選擇一個小的子樣本。並看看在https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example,不要忘記包括電話庫()等 – 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

我希望你意識到這只是繪製multiclass.roc計算出的6條曲線之一(可能是高位或低位)。 – Calimo