簡體   English   中英

使用朴素貝葉斯分類器計算混淆矩陣

[英]Computing a confusion matrix using a Naive Bayes Classifier

我需要通過在 R 中進行留一法交叉驗證,使用wbca數據集中每個變量的多項分布來計算朴素貝葉斯分類器的混淆矩陣。

需要注意的是,采樣惡性腫瘤的先驗概率為 π0 = 1/3,采樣良性腫瘤的先驗概率為 π1 = 2/3。 我不知道從哪里開始,因為我對機器學習還很陌生。

我認為我應該解決這個問題的方法是首先實現朴素貝葉斯分類器,然后執行 LOOCV,然后計算混淆矩陣。 我不確定這是否正確,如果正確,那么我不知道如何在代碼中寫出來。

任何見解或幫助將不勝感激!

我認為 naivebayes 包允許多項式預測器,因此請嘗試以下操作,其中 LOOCV 大致實現:

library(faraway)
library(naivebayes)
library(caret)

predictors = !grepl("Class",colnames(wbca))
label = "Class"

res = lapply(1:nrow(wbca),function(i){
fit = multinomial_naive_bayes(y=factor(wbca[-i,label]),
x=as.matrix(wbca[-i,predictors]),prior=c(1/3,2/3))
data.frame(label=wbca[i,label],
pred = predict(fit,as.matrix(wbca[i,predictors],nrow=1))
)
})

res = do.call(rbind,res)

confusionMatrix(factor(res$label,levels=0:1),res$pred)

Confusion Matrix and Statistics

          Reference
Prediction   0   1
         0 197  41
         1  20 423

               Accuracy : 0.9104          
                 95% CI : (0.8864, 0.9308)
    No Information Rate : 0.6814          
    P-Value [Acc > NIR] : < 2e-16         

                  Kappa : 0.7989          

 Mcnemar's Test P-Value : 0.01045         

            Sensitivity : 0.9078          
            Specificity : 0.9116          
         Pos Pred Value : 0.8277          
         Neg Pred Value : 0.9549          
             Prevalence : 0.3186          
         Detection Rate : 0.2893          
   Detection Prevalence : 0.3495          
      Balanced Accuracy : 0.9097          

       'Positive' Class : 0      

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM