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

如何从BinaryClassificationEvaluator评估结果中提取误分类标签并生成混淆矩阵?

Sentence Transformers:误分类提取与混淆矩阵生成方案

核心逻辑说明

不用额外调用encode()重新计算,BinaryClassificationEvaluator在评估时已经自动生成包含真实标签、预测标签、相似度得分的CSV文件。默认规则是:以余弦相似度×100作为得分,阈值设为50——得分≥50预测为1(相似),<50预测为0(不相似),和你预想的判定逻辑一致。

一、提取误分类样本

  1. 找到评估生成的CSV文件(默认命名是dev_sample_evaluation_results.csv,文件名里的dev_sample对应你设置的name参数值)
  2. 用以下代码筛选并导出误分类样本:
import pandas as pd

# 读取评估结果文件
eval_result_df = pd.read_csv(f"{cwd}/dev_sample_evaluation_results.csv")

# 筛选真实标签和预测标签不一致的行
misclassified_df = eval_result_df[eval_result_df['gold_label'] != eval_result_df['prediction']]

# 关联原数据集的句子内容(确保原df和评估结果的行顺序完全一致)
misclassified_full = pd.concat([df, misclassified_df], axis=1).dropna(subset=['gold_label'])
# 保存误分类样本到文件
misclassified_full.to_csv(f"{cwd}/misclassified_samples.csv", index=False)

二、生成混淆矩阵

借助sklearn的工具快速生成,代码如下:

from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay
import matplotlib.pyplot as plt

# 从评估结果中提取真实标签和预测标签
y_true = eval_result_df['gold_label']
y_pred = eval_result_df['prediction']

# 计算混淆矩阵
cm = confusion_matrix(y_true, y_pred)

# 可视化并保存(可选)
disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=['不相似(0)', '相似(1)'])
disp.plot(cmap=plt.cm.Blues)
plt.savefig(f"{cwd}/confusion_matrix.png")
plt.show()

自定义阈值的处理(可选)

如果不想用默认的50作为阈值,可基于CSV里的score列重新计算预测标签:

# 示例:设置阈值为45
custom_threshold = 45
eval_result_df['custom_pred'] = (eval_result_df['score'] >= custom_threshold).astype(int)
# 之后用custom_pred替代y_pred即可生成对应混淆矩阵

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 04:32:29