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

如何单独绘制测试集中A数据集样本的分类混淆矩阵

仅统计A来源测试样本分类效果的实现方法

前置准备

你已经完成以下基础工作:

  • 读取A.csv、B1.csv、B2.csv、B3.csv、C1.csv、C2.csv、C3.csv共7个源数据集,为每个数据集添加Dataset列标记数据来源
  • 调用pd.concat()完成全量数据合并,用于二分类(分类标签为Good/Bad)监督模型的训练测试
  • 已实现基于seaborn热力图的混淆矩阵绘制函数,支持传入真实标签、预测标签、类别名称输出可视化结果

实现步骤

核心逻辑是拆分数据集时保留来源标记列,待模型输出全量测试集预测结果后,再筛选A来源样本的对应结果做单独评估,全程不要把来源列作为特征输入模型。

  1. 拆分训练/测试集
    拆分阶段仅剔除标签列,保留Dataset列用于后续样本筛选,建议按标签分层拆分保证样本分布一致:
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier

# 假设合并后的全量数据存放在变量df中,标签列名为label
X = df.drop(columns=['label'])
y = df['label']

# 按33%比例拆分测试集,固定random_state保证结果可复现
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.33, random_state=42, stratify=y
)
  1. 构造特征集并训练模型
    训练前再剔除Dataset这个非业务特征列,避免模型学习到数据集来源的无关信息:
# 过滤非特征列
train_features = X_train.drop(columns=['Dataset'])
test_features = X_test.drop(columns=['Dataset'])

# 训练随机森林分类器
rf_clf = RandomForestClassifier(random_state=42)
rf_clf.fit(train_features, y_train)

# 输出全量测试集预测结果
test_pred_all = rf_clf.predict(test_features)
  1. 提取A来源测试样本的评估数据
    通过布尔索引筛选出测试集中来源为A的样本,匹配对应的真实标签和预测结果:
# 定位A来源测试样本
a_test_mask = X_test['Dataset'] == 'A'
# 提取对应真实标签、预测结果
a_true = y_test[a_test_mask]
a_pred = test_pred_all[a_test_mask]
  1. 生成专属混淆矩阵
    将a_true、a_pred和类别列表['Good', 'Bad']传入你预定义的混淆矩阵绘制函数,即可得到仅针对A数据集测试样本的分类表现结果。

注意事项

  • 不要在拆分数据集前就丢弃Dataset列,否则拆分后无法定位测试集中的样本来源归属
  • 模型训练、推理阶段必须排除Dataset列,否则会引入数据泄露,导致评估结果不可信
  • 分层拆分可以避免A类样本在训练/测试集中分布偏差,保证评估结果稳定

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 03:27:22