原网站:sklearn官网
使用sklearn计算 F1 score
sklearn.metrics.f1_score(y_true, y_pred, labels=None,
pos_label=1, average='binary', sample_weight=None,
zero_division='warn')
计算F1分数,也称为平衡F分数或F测度
F1分数可以解释为精度和查全率的加权平均值,其中F1分数在1时达到最佳值,在0时达到最差值。精度和查全率对F1分数的相对贡献相等。F1分数的公式为:
F1 = 2 * (precision * recall) / (precision + recall)
在多类别和多标签的情况下,这是每个类别的F1分数的平均值,其权重取决于average 参数。
参数说明:
y_true:1d数组,或标签指示符数组/稀疏矩阵
基本事实(正确)目标值。
y_pred:1d数组,或标签指示符数组/稀疏矩阵
分类器返回的估计目标。
labels:list,optional
包括when的标签集,以及if的顺序。可以排除数据中存在的标
签,例如,以忽略多数否定类别的方式计算多类平均值,而数
据中不存在的标签将导致宏平均值中的0成分。对于多标签目
标,标签是列索引。默认情况下,和 中的所有标签均按排序顺
序使用。
average != 'binary'average is Noney_truey_pred
pos_label:str或int,默认值为1
要报告是否average='binary'以及数据是否为二进制的类。如果数据是
多类或多标签的,则将被忽略;设置,labels=[pos_label]并且只会报
告该标签的得分。average != 'binary'
average:string, [None, ‘binary’ (default), ‘micro’, ‘macro’, ‘samples’, ‘weighted’]
对于多类/多标签目标,此参数是必需的。如果为None,则返
回每个班级的分数。否则,这将确定对数据执行的平均类型:
'binary':仅报告由指定的类的结果pos_label。
仅在目标(y_{true,pred})为二进制时适用。
'micro':通过计算正确,错误和否定的总数来全局计算指标。
'macro':计算每个标签的指标,并找到其未加权平均值。
这没有考虑标签不平衡。
'weighted':计算每个标签的指标,并找到其平均权重(受支持)
(每个标签的真实实例数)。
这改变了“宏观”以解决标签的不平衡。
这可能导致F得分不在精确度和召回率之间。
'samples':计算每个实例的指标,并找到其平均值
(仅对不同于的多标签分类有意义 accuracy_score)。
sample_weight:array-like of shape (n_samples,), default=None
样品重量。
zero_division:“warn”, 0 or 1, default=”warn”
设置除法为零(即所有预测和标签均为负)时
返回的值。如果设置为“ warn”,则该值为0,
但也会发出警告。
返回值:
f1_score:float or array of float, shape = [n_unique_labels]
二进制分类中的阳性类别的F1分数,
或者对于多类别任务,每个类别的F1分数的加权平均值。
Notes
When true positive + false positive == 0, precision is undefined; When true positive + false negative == 0, recall is undefined. In such cases, by default the metric will be set to 0, as will f-score, and UndefinedMetricWarning will be raised. This behavior can be modified with zero_division.
举例:
>>> from sklearn.metrics import f1_score
>>> y_true = [0, 1, 2, 0, 1, 2]
>>> y_pred = [0, 2, 1, 0, 0, 1]
>>> f1_score(y_true, y_pred, average='macro')
0.26...
>>> f1_score(y_true, y_pred, average='micro')
0.33...
>>> f1_score(y_true, y_pred, average='weighted')
0.26...
>>> f1_score(y_true, y_pred, average=None)
array([0.8, 0. , 0. ])
>>> y_true = [0, 0, 0, 0, 0, 0]
>>> y_pred = [0, 0, 0, 0, 0, 0]
>>> f1_score(y_true, y_pred, zero_division=1)
1.0...
版权声明:本文为weixin_46072771原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。