如何在sklearn的MultinomialNB中获取预测的召回率与精确率?
解决MultinomialNB获取召回率与精确率的问题
你误解了MultinomialNB的方法——它完全支持获取预测结果列表,只需要调用predict()方法即可。结合sklearn的评估指标模块,就能轻松计算精确率和召回率。
完整实现步骤
- 调用模型的
predict(x_test)方法得到预测标签列表 - 使用
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
相关产品推荐
相关产品推荐

