如何获取逻辑回归模型预测结果的混淆矩阵?
泰坦尼克号模型混淆矩阵计算问题解决方法
问题核心原因
calculateConfusionMatrix(mlr包函数)需要真实标签与预测标签配对才能生成混淆矩阵,但titanic_test数据集默认不含Survived真实标签;- 你仅传入了预测响应值,不符合函数的参数要求。
解决方法一:训练集交叉验证(无需外部测试集)
直接在训练阶段通过交叉验证评估模型并获取混淆矩阵:
# 定义10折交叉验证策略 cv_strategy <- makeResampleDesc("CV", iters = 10) # 执行交叉验证,指定评估指标包含混淆矩阵 cv_results <- resample(logReg, titanicTask, resampling = cv_strategy, measures = list(cm)) # 查看混淆矩阵 print(cv_results$measures.test$cm)
解决方法二:使用带真实标签的测试集
如果你有包含Survived真实标签的测试数据,可通过以下两种方式计算:
方式1:利用Prediction对象直接计算
确保测试数据集包含Survived列,预测后直接传入函数:
# 假设titanicNewClean_unseen包含Survived真实标签 titanic_prediction <- predict(logRegModel, newdata = titanicNewClean_unseen) # 生成混淆矩阵 confusion_mat <- calculateConfusionMatrix(titanic_prediction) print(confusion_mat)
方式2:手动传入真实与预测标签
若真实标签单独存储(比如变量true_survived):
# 提取预测标签 pred_survived <- titanic_prediction$data$response # 计算混淆矩阵 confusion_mat <- calculateConfusionMatrix(pred = pred_survived, true = true_survived) print(confusion_mat)
补充提示
titanic包的titanic_test默认无Survived标签,若需用该数据集评估,需自行获取完整测试集标签(如从Kaggle泰坦尼克竞赛数据集下载);- 若使用mlr的新版本
mlr3,需改用confusion_matrix()函数,用法类似:
library(mlr3) confusion_mat <- confusion_matrix(pred_survived, true_survived)
内容的提问来源于stack exchange,提问作者Rizzle
相关产品推荐
相关产品推荐

