You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scikit-learn随机森林二分类混淆矩阵行对应类别判断方法咨询

快速确定Scikit-learn混淆矩阵的行对应类别

这问题我太有共鸣了!用Scikit-learn做二分类任务时,盯着混淆矩阵猜行对应哪个类别真的很头疼,尤其是样本数量相近的时候。其实有几个简单直接的方法,帮你一秒搞清楚:

1. 牢记函数的默认规则

Scikit-learn的confusion_matrix函数有明确的定义:

  • 行对应真实标签(y_true),列对应预测标签(y_pred)
  • 类别顺序默认是y_true中唯一值的升序排列(比如二分类任务里,0会排在1前面,第一行就是真实类别0,第二行是真实类别1)

如果想自定义类别顺序,直接用labels参数指定就行:

from sklearn.metrics import confusion_matrix

# 强制让真实类别1排在混淆矩阵的第一行
cm = confusion_matrix(y_true, y_pred, labels=[1, 0])

2. 用分类报告辅助验证

跑一份分类报告就能快速对应上类别顺序:

from sklearn.metrics import classification_report

print(classification_report(y_true, y_pred))

报告里的类别顺序和混淆矩阵的行/列顺序完全一致——比如报告里第一个列出的类别,就是混淆矩阵第一行对应的真实类别,同时也是第一列对应的预测类别。

3. 小样本手动测试

最快的验证方法是造个极简的已知数据集:

y_true = [0, 0, 1, 1]  # 两个真实0,两个真实1
y_pred = [0, 1, 0, 1]  # 第一个0预测正确,第二个0预测错误;第一个1预测错误,第二个1预测正确

cm = confusion_matrix(y_true, y_pred)
print(cm)
# 输出结果:
# [[1 1]
#  [1 1]]

一眼就能看出来:第一行是真实类别0的结果(1个预测正确,1个预测错误),第二行是真实类别1的结果,完美对应。

4. 可视化直接看标注

用ConfusionMatrixDisplay生成可视化混淆矩阵,标签直接标在图上,根本不用猜:

from sklearn.metrics import ConfusionMatrixDisplay

disp = ConfusionMatrixDisplay.from_predictions(y_true, y_pred)
disp.plot()

生成的图会清晰标注“True Label”(行)和“Predicted Label”(列),每个单元格的类别标签也会显示,直观到不行。

额外提醒

如果用了Pipeline或者做过标签编码,要确保训练集和测试集的标签编码规则一致——比如别训练时把0设为正类,测试时又搞反,不然混淆矩阵的顺序也会乱。

内容的提问来源于stack exchange,提问作者kanam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:18:23