Вычисление путаницы с использованием наивного байесовского классификатора - PullRequest
0 голосов
/ 11 марта 2020

Мне нужно вычислить матрицу путаницы наивного байесовского классификатора с использованием полиномиальных распределений для каждой переменной в наборе данных wbca, выполнив перекрестную проверку с опрокидыванием в R.

Как примечание, предыдущая вероятность отбора злокачественной опухоли составляет π0 = 1/3, а предыдущая вероятность отбора проб доброкачественной опухоли составляет π1 = 2/3. Я понятия не имею, с чего начать, так как я довольно плохо знаком с машинным обучением.

Я думаю, что мне следует подойти к этому, сначала реализовать наивный байесовский классификатор, затем выполнить LOOCV, а затем вычислить матрицу путаницы. Я не уверен, если это правильно, и если это так, то я не знаю, как записать это в коде.

Буду очень признателен за любую информацию или помощь!

1 Ответ

1 голос
/ 13 марта 2020

Я думаю, что пакет 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      
...