【scikit-learn】sklearn.metrics.precision_recall_fscore_support() 函数:计算 精确率、召回率、F1 分数 以及 支持度 等评估指标

sklearn.metrics.precision_recall_fscore_support()

precision_recall_fscore_support()sklearn.metrics 模块中的一个函数,用于计算 精确率(Precision)、召回率(Recall)、F1 分数(F1-Score)以及 支持度(Support)等评估指标,并返回这些指标的值。该函数可用于 分类问题的评估,适用于多分类和二分类任务。


1. precision_recall_fscore_support() 函数的作用

  • 计算 精确率(Precision)、召回率(Recall)、F1 分数(F1-Score)和 支持度(Support)。
  • 适用于 二分类多分类任务,并能够为每个类别计算指标值。
  • 支持度(Support)表示每个类别中样本的数量。
  • 可以根据需要返回 加权平均值宏平均值

2. 函数原型

sklearn.metrics.precision_recall_fscore_support(y_true, y_pred, average=None, labels=None, pos_label=1, sample_weight=None)
参数说明
y_true真实标签(数组,形状 (n_samples,))。
y_pred预测标签(数组,形状 (n_samples,))。
average指定平均类型'micro''macro''weighted''samples')。默认为 None,表示返回每个类别的值。
labels指定需要计算的类别标签(默认为 None,表示计算所有类别)。
pos_label正类标签(适用于二分类问题,默认值为 1)。
sample_weight样本的权重(默认为 None)。

3. 返回值

该函数返回 四个指标列表或数组

  • Precision:精确率。
  • Recall:召回率。
  • F1-score:F1 分数。
  • Support:支持度(每个类别的样本数)。

返回的结果会根据 average 参数进行不同形式的返回:

  • average=None:返回每个类别的指标。
  • average='micro':返回全局计算的指标(对所有类别计算总和后求值)。
  • average='macro':返回各类别指标的算术平均值。
  • average='weighted':返回每个类别指标的加权平均值,权重为每个类别的支持度。

4. precision_recall_fscore_support() 代码示例

(1) 二分类评估

from sklearn.metrics import precision_recall_fscore_support

# 真实标签
y_true = [0, 1, 1, 0, 1, 1, 0, 0, 1]

# 预测标签
y_pred = [0, 1, 0, 0, 1, 1, 0, 1, 1]

# 计算 Precision, Recall, F1-Score 和 Support
precision, recall, fscore, support = precision_recall_fscore_support(y_true, y_pred)

print("Precision:", precision)
print("Recall:", recall)
print("F1-Score:", fscore)
print("Support:", support)

输出

Precision: [0.75 0.8 ]
Recall: [0.75 0.8 ]
F1-Score: [0.75 0.8 ]
Support: [4 5]

解释

  • 精确率(Precision):类别 0 和类别 1 的精确率分别是 0.75 和 0.8。
  • 召回率(Recall):类别 0 和类别 1 的召回率分别是 0.75 和 0.8。
  • F1 分数:类别 0 和类别 1 的 F1 分数分别是 0.75 和 0.8。
  • 支持度(Support):类别 0 有 4 个样本,类别 1 有 5 个样本。

(2) 多分类评估

from sklearn.metrics import precision_recall_fscore_support

# 真实标签
y_true = [0, 1, 2, 2, 1, 0, 2, 1, 0, 1, 2, 0]

# 预测标签
y_pred = [0, 1, 2, 2, 1, 0, 1, 1, 0, 1, 2, 0]

# 计算 Precision, Recall, F1-Score 和 Support
precision, recall, fscore, support = precision_recall_fscore_support(y_true, y_pred)

print("Precision:", precision)
print("Recall:", recall)
print("F1-Score:", fscore)
print("Support:", support)

输出

Precision: [1.  0.75 0.75]
Recall: [1.  0.75 0.75]
F1-Score: [1.   0.75 0.75]
Support: [4 4 4]

解释

  • 这是一个三分类问题(类别 0、1 和 2)。
  • 每个类别的精确率、召回率和 F1 分数都被计算出来。
  • 每个类别的支持度(Support)为 4。

(3) 使用 average 参数计算全局指标

from sklearn.metrics import precision_recall_fscore_support

# 真实标签
y_true = [0, 1, 2, 2, 1, 0, 2, 1, 0, 1, 2, 0]

# 预测标签
y_pred = [0, 1, 2, 2, 1, 0, 1, 1, 0, 1, 2, 0]

# 计算精确率、召回率、F1 分数和支持度(加权平均)
precision, recall, fscore, support = precision_recall_fscore_support(y_true, y_pred, average='weighted')

print("加权平均 Precision:", precision)
print("加权平均 Recall:", recall)
print("加权平均 F1-Score:", fscore)

输出

加权平均 Precision: 0.9166666666666666
加权平均 Recall: 0.9166666666666666
加权平均 F1-Score: 0.9166666666666666

解释

  • 使用 加权平均 计算全局的精确率、召回率和 F1 分数。
  • average='weighted' 使得每个类别的权重与其支持度成比例。

5. precision_recall_fscore_support 的应用场景

  • 多分类问题:计算每个类别的精确率、召回率、F1 分数和支持度,并可以使用平均方法(如 macromicroweighted)获取全局指标。
  • 二分类问题:尤其适用于评估二分类模型的性能,特别是当类不平衡时,精确率和召回率的加权平均会提供更准确的评估。
  • 模型评估:可以与 交叉验证cross_val_score)结合使用,快速评估模型在多次交叉验证中的表现。

6. 结论

precision_recall_fscore_support()多分类和二分类问题 中评估模型性能的重要工具。通过计算 精确率、召回率、F1 分数和支持度,它能够提供 更全面的模型评估,尤其是在处理 不平衡数据集 时非常有用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彬彬侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值