【问题标题】: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