当前位置:   article > 正文

使用sklearn accuracy_score,f1_score,roc_auc_score,recall_score,precision_score对模型进行评估_from sklearn.metrics import accuracy_score, precis

from sklearn.metrics import accuracy_score, precision_score, roc_auc_score,

评估模型一般都涉及到几个名词,而且分为两种类型:
先上混淆矩阵图,然后通过混淆矩阵更能清晰了解计算过程。
这里写图片描述
1.以下都是针对某一个类别而言,一般用于更关注哪个类别是否被分对了
计算的时候只分2类,这里的2分类是指类别只有2种,那么对于多分类,比如苹果,梨,桃子,在使用的时候需要针对某类进行2分类,比如’是苹果’,’不是苹果’,这时候也就是关注苹果了。

Precision,正确率(TP/TP+FP)(注意:有些人把precision叫做准确率是不对的)
Recall,召回率 TP/(TP+FN),其实就是对一个类别做一个准确率
F1score,调和平均 harmonic mean,F1 = 2 * (precision * recall) / (precision + recall)
ROC曲线 纵坐标是召回率,横坐标是假阳率=FP/(FP+TN),ROC曲线的面积AUC是当前分类器的平均性能,完美的分类器为AUC=1.0,而随机猜的为0.5

2.针对整体而言
Accuracy 准确率,对总体而言,和Recall有点区别

sklearn 中都有相应的评估方法和生成混淆矩阵
from sklearn.metrics import accuracy_score,f1_score,roc_auc_score,recall_score,precision_score,confusion_matrix

from sklearn.metrics import accuracy_score,f1_score,roc_auc_score,recall_score,precision_score

#例如有混淆矩阵
#样本标签顺序:'0','1';分别表示第一行为'0'标签类别,第二行为'1'类别标签
# [10 0]
# [5  5]

#计算准确率
acc_score = accuracy_score(y_test,preds)
print(acc_score)
#0.75 ,计算过程(10+5)/(10+0+5+5)=0.75
#其实也相当于np.mean(preds == y_test))

#计算roc面积,但只限制于2分类,根据preds值的类型做不同处理
#1.preds是预测的类别,而不是概率
#根据上述例子,preds 里面的值是一个类别标签,比如'0'或者'1'
roc_auc_score1 = roc_auc_score(y_test,preds)
print(roc_auc_score1)
#0.75 计算面积如下图(文章最后),点(0.5,1.0),分别和(0.0)和(1.1)相连,然后求面积
#2.preds是概率值,那么sklearn会自动调整阈值然后画出roc曲线,然后计算roc曲线面积AUC

#计算召回率
#def recall_score(y_true, y_pred, labels=None, pos_label=1, average='binary',sample_weight=None)
#有个参数pos_label,指定计算的类别的召回率,默认为1,这里也就是查看标签为'1'的召回率
raca_score = recall_score(y_test,preds)
print(raca_score)
#0.5 计算过程5/(5+5)=0.5

#计算正确率
#def precision_score(y_true, y_pred, labels=None, pos_label=1,average='binary', sample_weight=None)
#有个参数pos_label,指定计算的类别的正确率,默认为1
prec_score = precision_score(y_test,preds)
print(prec_score)
#1.0 计算过程5/(5+0) = 1.0

#计算F1score
#def f1_score(y_true, y_pred, labels=None, pos_label=1, average='binary',sample_weight=None)
#使用的是调和平均 harmonic mean,F1 = 2 * (precision * recall) / (precision + recall)
f1_score = f1_score(y_test,preds)
#0.666666666667 计算过程 2(1*0.5)/(1+0.5) = 1/1.5 = 0.666666666667
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

这里写图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/142865
推荐阅读
相关标签
  

闽ICP备14008679号