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
相关产品推荐
相关产品推荐

