机器学习中 F1-score
整合了两个链接的知识点,把里面的小错误改掉了:机器学习中的F1-score【深度学习笔记】F1-Score一、定义F1分数(F1-score)是分类问题的一个衡量指标。一些多分类问题的机器学习竞赛,常常将F1-score作为最终测评的方法。它是精确率和召回率的调和平均数,最大为1,最小为0。此外还有F2分数和F0.5分数。F1分数认为召回率和精确率同等重要,F2分数认为召回率的重要程度是精确率的2
整合了两个链接的知识点,把里面的小错误改掉了:
机器学习中的F1-score
【深度学习笔记】F1-Score
一、定义
F1分数(F1-score)是分类问题的一个衡量指标。一些多分类问题的机器学习竞赛,常常将F1-score作为最终测评的方法。它是精确率和召回率的调和平均数,最大为1,最小为0。
此外还有F2分数和F0.5分数。F1分数认为召回率和精确率同等重要,F2分数认为召回率的重要程度是精确率的2倍,而F0.5分数认为召回率的重要程度是精确率的一半。计算公式为:
G分数是另一种统一精确率和的召回率系统性能评估标准,G分数被定义为召回率和精确率的几何平均数。
二、计算
- 首先定义以下几个概念:
TP(True Positive):预测答案正确
FP(False Positive):错将其他类预测为本类
FN(False Negative):本类标签预测为其他类标 - 通过第一步的统计值计算每个类别下的precision和recall
精准度 / 查准率(precision):指被分类器判定正例中的正样本的比重
召回率 / 查全率 (recall):指的是被预测为正例的占总的正例的比重
另外,介绍一下常用的准确率(accuracy)的概念,代表分类器对整个样本判断正确的比重。
- 通过第二步计算结果计算每个类别下的f1-score,计算方式如下:
- 通过对第三步求得的各个类别下的F1-score求均值,得到最后的评测结果,计算方式如下:
举例:要对产品分类:正品和次品。现在有200个产品,刚好100个正品,100个次品,训练之后的预测50个正品,150个次品,即:预测50个正品正确,有50个正品被预测为次品,100个次品预测全部正确。
此时:
TP: 50
FP: 0
FN: 50
TN: 100
TPR: 0.5
FPR: 0.5
Accuracy: 75%
Precision: 100%
Recall: 50%
F1-Measure: 66.7% 即(2323)
另外补充一些经常用到的评价指标。
三、python
可通过加载sklearn包,方便的使用f1_score函数。
函数原型:
sklearn.metrics.f1_score(y_true, y_pred, labels=None, pos_label=1, average=’binary’, sample_weight=None)
参数:
y_true : 1d array-like, or label indicator array / sparse matrix.目标的真实类别。
y_pred : 1d array-like, or label indicator array / sparse matrix.分类器预测得到的类别。
average : string,[None, ‘binary’(default), ‘micro’, ‘macro’, ‘samples’, ‘weighted’]
这里需要注意,如果是二分类问题则选择参数‘binary’;如果考虑类别的不平衡性,需要计算类别的加权平均,则使用‘weighted’;如果不考虑类别的不平衡性,计算宏平均,则使用‘macro’。
from sklearn.metrics import f1_score
y_pred = [0, 1, 1, 1, 2, 2]
y_true = [0, 1, 0, 2, 1, 1]
print(f1_score(y_true, y_pred, average='macro'))
print(f1_score(y_true, y_pred, average='weighted'))
分析上述代码,
对于类0:TP=1,FP=0,FN=1,precision=1,recall=1/2,F1-score=2/3,Weights=1/3
对于类1:TP=1,FP=2,FN=2,precision=1/3,recall=1/3,F1-score=1/3,Weights=1/2
对于类2:TP=0,FP=2,FN=1,precision=0,recall=0,F1-score=0,Weights=1/6
宏平均分数为:0.333;加权平均分数为:0.389
更多推荐
所有评论(0)