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

如何在sklearn的MultinomialNB中获取预测的召回率与精确率?

解决MultinomialNB获取召回率与精确率的问题

你误解了MultinomialNB的方法——它完全支持获取预测结果列表,只需要调用predict()方法即可。结合sklearn的评估指标模块,就能轻松计算精确率和召回率。

完整实现步骤

  1. 调用模型的predict(x_test)方法得到预测标签列表
  2. 使用sklearn.metrics中的precision_score和recall_score计算对应的指标

示例代码

from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import precision_score, recall_score

# 初始化并训练模型
model = MultinomialNB()
model.fit(x_train, y_train)

# 获取预测结果
y_pred = model.predict(x_test)

# 计算精确率与召回率(二分类场景)
precision = precision_score(y_test, y_pred)
recall = recall_score(y_test, y_pred)

print(f"精确率: {precision:.4f}")
print(f"召回率: {recall:.4f}")

多分类场景的处理

如果你的任务是多分类,需要指定average参数来定义多分类下的指标计算方式,常用选项包括:

  • 'micro': 全局计算所有类别的TP、FP、FN,再计算指标
  • 'macro': 计算每个类别的指标后取算术平均
  • 'weighted': 计算每个类别的指标后按样本量加权平均

示例代码:

# 多分类场景下的精确率与召回率计算
precision_macro = precision_score(y_test, y_pred, average='macro')
recall_macro = recall_score(y_test, y_pred, average='macro')

print(f"多分类宏平均精确率: {precision_macro:.4f}")
print(f"多分类宏平均召回率: {recall_macro:.4f}")

另外,model.score()方法默认返回的是准确率(accuracy),即预测正确的样本占总样本的比例,和精确率、召回率是不同的评估指标,不要混淆。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 02:25:17