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

如何在scikit-learn中从混淆矩阵提取假阳性样本数组?

嘿,我来帮你搞定这个问题!要从scikit-learn里拿到假阳性的样本数组,其实不用只盯着混淆矩阵的数值看——咱们直接用测试集的真实标签和模型预测结果就能精准筛选出来,下面给你一步步讲清楚:

获取假阳性样本数组的方法

首先先明确:**假阳性(FP)**指的是「实际标签是负类,但模型预测成正类」的样本(假设你的标签是0代表负类,1代表正类;如果你的标签体系反过来,记得调整后面的判断条件哦)。

步骤1:生成假阳性的筛选掩码

先创建一个布尔数组,标记出哪些样本符合假阳性的条件:

# 这里假设y_test里0是负类,1是正类
fp_mask = (y_test == 0) & (y_pred_class == 1)

步骤2:提取对应的样本数组

用这个掩码去索引你的测试集特征(X_test),就能直接得到所有假阳性的样本了:

# 获取假阳性的特征数组
fp_samples = X_test[fp_mask]

# 如果你还保留了原始的测试集文本,也可以直接提取这些误判的文本:
# 比如你之前有original_test_texts这个列表的话
# fp_misclassified_texts = original_test_texts[fp_mask]

用混淆矩阵验证(可选)

要是你想确认筛选出来的数量对不对,可以计算混淆矩阵来核对:

from sklearn.metrics import confusion_matrix

cm = confusion_matrix(y_test, y_pred_class)
# 二分类的混淆矩阵结构是 [[TN, FP], [FN, TP]],所以[0,1]就是假阳性的数量
fp_count_from_cm = cm[0, 1]

# 验证一下数量是否匹配
assert len(fp_samples) == fp_count_from_cm, "哎?假阳性数量对不上,检查下标签定义哦!"

整合到你的现有代码里

把这些步骤加到你原本的工作流程里,完整代码大概是这样:

from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import confusion_matrix

# 假设X是已经完成文本向量化的特征矩阵,y是二分类标签(0/1)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=42)

# 模型训练流程
nb = MultinomialNB()
nb.fit(X_train, y_train)
y_pred_class = nb.predict(X_test)

# 提取假阳性样本
fp_mask = (y_test == 0) & (y_pred_class == 1)
fp_samples = X_test[fp_mask]

# 查看结果
cm = confusion_matrix(y_test, y_pred_class)
print(f"混淆矩阵:\n{cm}")
print(f"筛选出的假阳性样本数量: {len(fp_samples)}")

这样你就轻松拿到所有被模型误判的假阳性样本数组啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:39:34