sklearn中多分类问题各指标的计算
中多分类问题各指标的计算
sklearn中中api介绍介绍
常用的常用的api有有
accuracy_score
precision_score
recall_score
f1_score
分别是分别是:
正确率
准确率 P
召回率 R
f1-score
其具体的计算方式:
其具体的计算方式
accuracy_score
只有一种计算方式,就是对所有的预测结果 判对的个数/总数
sklearn具有多种的计算方式,其中每一种模式的说明如下:
具有不同的模式 ‘micro’, ‘macro’, ‘weighted’
``'binary'``:
只适用于二分类问题,需要pos_label指定以哪一个作为正例
``'micro'``:
通过计算总真阳性数来计算全局度量,假阴性和假阳性
``'macro'``:
计算每个标签的指标,并计算它们的平均值。没有考虑到标签的不平衡。
``'weighted'``:
计算每个标签的指标,并根据支持度(每个标签的真实实例数)找到它们的平均值。这改变了“宏”来解释标签的不平衡;它可以导致一个f-score,不介于精度和
召回之间。
示例示例:
构建一组数据
y = [1,2,2,1,3,3,1,1] y_pre = [1,2,1,1,3,3,3,1]
直接计算每一类的TP FP TN FN
1 2 3
tp 3 1 2
fp 1 0 1
tn 3 6 5
fn 1 1 0
micro
precision_score
针对micro,计算时就是对每一类,计算TP/TP+FP
手动计算:
6/8 = 0.75
api
print('precision_score:{}'.format(precision_score(y, y_pre,average='micro')))
precision_score:0.75
recall_score
计算每一类的TP/TP+FN
6/8 = 0.75
print('recall_score:{}'.format(recall_score(y, y_pre,average='micro')))
recall_score:0.75
F1
0.75
print('F1:{}'.format(f1_score(y, y_pre,average='micro')))
F1:0.75
macro
根据算出的每一类的混淆矩阵,先计算针对每一类的P和R然后再求算数平均值
precision_score
1:3/4
2:1
3:2/3
最终:80.55%
print((precision_score(y, y_pre,average='macro')))
0.805555555556
recall_score
1:3/4
2:1/2
3:1
最终:0.75
print((recall_score(y, y_pre,average='macro')))
0.75
F1
1:3/4
2:2/3
3:4/5
最终:73.89%
print((f1_score(y, y_pre,average='macro')))
0.738888888889
weighted
加权平均值
三个类别的权重分别为:
1:1/2
2:1/4
3:1/4
再根据macro中算出的各类的分数,加权平均
precision_score
1:3/4
2:1
3:2/3
最终:79.17%
print((precision_score(y, y_pre,average='weighted')))
0.791666666667
recall_score
1:3/4
2:1/2
3:1
最终:0.75
print((recall_score(y, y_pre,average='weighted')))
0.75
F1
1:3/4
2:2/3
3:4/5
最终:74.167
print((f1_score(y, y_pre,average='weighted')))
0.741666666667
作者:hylalalala