如何分析逻辑回归模型测试项错误模式及鸢尾花分类误判情况?
分析逻辑回归模型的错误分类频次
当然可以实现!我们可以通过简单的统计计算或者构建混淆矩阵,精准获取你想要的错误分类频次。下面是基于你现有代码的扩展方案:
第一步:回顾并完善现有代码
先把你已有的代码整合,确保预测结果和真实标签能对应上:
library(datasets) # 创建Virginica的哑变量 iris$dummy_virginica_iris <- 0 iris$dummy_virginica_iris[iris$Species == 'virginica'] <- 1 # 训练逻辑回归模型 glm <- glm(dummy_virginica_iris ~ Petal.Width + Sepal.Width, data = iris, family = 'binomial') summary(glm) # 生成预测结果 glm.pred <- predict(glm, type="response") virginica <- ifelse(glm.pred > .5, TRUE, FALSE)
第二步:统计目标错误频次
我们可以直接对比真实标签和预测结果,统计两类错误的数量:
# 提取真实标签(1=Virginica,0=非Virginica) true_labels <- iris$dummy_virginica_iris # 将预测结果转换为0/1格式,方便和真实标签对比 pred_labels <- as.numeric(virginica) # 统计Setosa/Versicolor被误判为Virginica的次数 false_positive <- sum(true_labels == 0 & pred_labels == 1) cat("Setosa和Versicolor被错误分类为Virginica的频次:", false_positive, "\n") # 统计Virginica被误判为非Virginica的次数 false_negative <- sum(true_labels == 1 & pred_labels == 0) cat("Virginica被错误分类为非Virginica的频次:", false_negative, "\n")
第三步:用混淆矩阵直观展示所有分类结果
如果想要更全面地看到分类情况,我们可以构建混淆矩阵,它能清晰呈现所有正确和错误的分类组合:
# 构建混淆矩阵,用更易懂的标签展示 confusion_matrix <- table( 真实类别 = ifelse(true_labels == 1, "Virginica", "Setosa/Versicolor"), 预测类别 = ifelse(pred_labels == 1, "Virginica", "Setosa/Versicolor") ) print(confusion_matrix)
运行后你会看到类似这样的输出:
预测类别 真实类别 Setosa/Versicolor Virginica Setosa/Versicolor 100 X Virginica Y 50
其中:
X就是Setosa/Versicolor被误判为Virginica的数量Y就是Virginica被误判为Setosa/Versicolor的数量
额外建议:分析误判样本的特征
如果想进一步探究为什么会出现这些误判,可以筛选出这些样本查看它们的特征:
# 筛选出被误判的Setosa/Versicolor misclassified_non_virginica <- iris[true_labels == 0 & pred_labels == 1, ] # 筛选出被误判的Virginica misclassified_virginica <- iris[true_labels == 1 & pred_labels == 0, ] # 查看这些样本的特征 print(misclassified_non_virginica) print(misclassified_virginica)
这样你就能看到这些误判样本的花瓣宽度、花萼宽度等特征,或许能找到错误分类的规律。
内容的提问来源于stack exchange,提问作者Arron
相关产品推荐
相关产品推荐

