sklearn 各种指标

TP – True Positive
FN – False Negative
TN – True Negative
FP – False Positive

1.Accuracy准确率
准确率 =(TP+TN)/(TP+TN+FP+FN)
from sklearn.metrics import accuracy_score
acc = accuracy_score(y, predicted)
虽然准确率可以判断总的正确率,但是在样本不平衡 的情况下,并不能作为很好的指标来衡量结果。举个简单的例子,比如在一个总样本中,正样本占 90%,负样本占 10%,样本是严重不平衡的。对于这种情况,我们只需要将全部样本预测为正样本即可得到 90% 的高准确率,但实际上我们并没有很用心的分类,只是随便无脑一分而已。这就说明了:由于样本不平衡的问题,导致了得到的高准确率结果含有很大的水分。即如果样本不平衡,准确率就会失效。

2.Precision精准率
精准率 =TP/(TP+FP)
from sklearn.metrics import precision_score
precision = precision_score(y,predicted,average='binary')
精准率和准确率看上去有些类似,但是完全不同的两个概念。精准率代表对正样本结果中的预测准确程度,而准确率则代表整体的预测准确程度,既包括正样本,也包括负样本。

3.Recall召回率/Sensitivity灵敏度
召回率=TP/(TP+FN)
recall = metrics.recall_score(y, predicted, average='macro')
召回率的应用场景: 比如拿网贷违约率为例,相对好用户,我们更关心坏用户,不能错放过任何一个坏用户。因为如果我们过多的将坏用户当成好用户,这样后续可能发生的违约金额会远超过好用户偿还的借贷利息金额,造成严重偿失。召回率越高,代表实际坏用户被预测出来的概率越高,它的含义类似:宁可错杀一千,绝不放过一个。

4.F1-score
F1=(2×Precision×Recall)/(Precision+Recall)
fscore = metrics.f1_score(y, predicted, average='weighted')
在PR曲线中可以看出,精确率(Precision)和召回率(Recall)之间的关系是「两难全」的关系。为了综合两者的表现,在两者之间找一个平衡点,就出现了一个 F1分数。

posted @ 2021-09-07 21:38  吴莫愁258  阅读(299)  评论(0编辑  收藏  举报