python计算precision、recall、f1score
一、介绍TP、TN、FP、FN
二分类中,假设只有正类(1)和负类(0)两个类别,True(1)和False(0)分别表示对和错;Positive(1)和Negative(0)表示预测为正类和负类。
TP:预测为Positive并且对了(样本为正类且预测为正类)
TN:预测为Negative并且对了(样本为负类且预测为负类)
FP:预测为Positive但是错了(样本为负类但预测为正类)
FN:预测为Negative但是错了(样本正类但预测为负类)
二、介绍precision、recall、f1score
TP+FP: 预测为Positive并且对了+预测为Positive但是错了=预测为Positive的样本总数
所以,precision表示为:被正确预测的Positive样本 / 被预测为Positive的样本总数
TP+FN: 预测为Positive并且对了+预测为Negative但是错了=实际为Positive的样本总数
所以,recall表示为:被正确预测的Positive样本 / 实际为Positive的样本总数
f1score是调和平均值,precision和recall只要一个比较小的话,f1score的值也会被拉下来:
三、python调用sklearn包实现
from sklearn.metrics import precision_score, recall_score, f1_score
y_true = [0, 1, 0, 1, 0, 1]
y_pred = [0, 0, 0, 1, 0, 1]
print('binary------------')
print("precision: {}".format(precision_score(y_true, y_pred, average='binary')))
print("recall: {}".format(recall_score(y_true, y_pred, average='binary')))
print("f1: {}".format(f1_score(y_true, y_pred, average='binary')))
运行结果: