如何计算logistic回归模型的正确预测比例并生成混淆矩阵
R语言生成Logistic回归混淆矩阵实现方法
第一步:修正预测逻辑(可选但推荐)
你当前调用predict时使用type="terms"返回的是自变量的线性贡献值,并非二分类常用的预测概率,常规分类逻辑可调整为:
# 输出预测概率 pre10 <- predict(glm9, germany, type = "response") # 以0.5为阈值做二分类,可根据需求调整阈值 prediction <- ifelse(pre10 >= 0.5, 1, 0)
如果你确有业务需要沿用原有线性项阈值≥1的分类逻辑,可跳过本步直接使用你已生成的prediction变量。
第二步:生成混淆矩阵
直接使用R基础函数table()即可生成你需要的格式,其中行对应真实观测值,列对应预测值:
# germany$v172替换为你数据集里存储真实观测值的变量名 conf_mat <- table(真实值 = germany$v172, 预测值 = prediction) print(conf_mat)
输出格式和你要求的完全一致:
预测值 真实值 0 1 0 182 63 1 24 32
第三步:计算正确预测占比
基于混淆矩阵可直接计算准确率:
accuracy <- sum(diag(conf_mat)) / sum(conf_mat)
可选:生成带评估指标的混淆矩阵
如果需要同时输出精确率、召回率、Kappa值等指标,可以使用caret包的confusionMatrix函数:
library(caret) # 需保证预测值和真实值的因子水平一致 res <- confusionMatrix( factor(prediction, levels = c(0,1)), factor(germany$v172, levels = c(0,1)) ) print(res)
内容的提问来源于stack exchange,提问作者Qian
相关产品推荐
相关产品推荐

