【问题标题】:Computing a confusion matrix using a Naive Bayes Classifier使用朴素贝叶斯分类器计算混淆矩阵
【发布时间】:2020-06-23 20:05:29
【问题描述】:

我需要通过在 R 中进行留一交叉验证,使用 wbca 数据集中每个变量的多项分布来计算朴素贝叶斯分类器的混淆矩阵。

请注意,采样恶性肿瘤的先验概率是 π0 = 1/3,采样良性肿瘤的先验概率是 π1 = 2/3。我不知道从哪里开始,因为我对机器学习还很陌生。

我认为我应该处理的方法是首先实现朴素贝叶斯分类器,然后执行 LOOCV,然后计算混淆矩阵。我不确定这是否正确,如果正确,那我不知道如何用代码写出来。

任何见解或帮助将不胜感激!

【问题讨论】:

    标签: r machine-learning statistics


    【解决方案1】:

    我认为 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      
    

    【讨论】:

      猜你喜欢
      • 2017-02-09
      • 2014-09-18
      • 2018-04-25
      • 1970-01-01
      • 2018-02-14
      • 2017-01-10
      • 2013-12-02
      • 2011-02-25
      相关资源
      最近更新 更多