【074】算法评估库 sklearn.metrics

内容目录

一、sklearn.metrics 简介二、sklearn.metrics 常用库三、详解评估库

【074】算法评估库 sklearn.metrics_第1张图片

一、Sklearn.metrics 简介

  无论利用机器学习算法进行回归、分类或者聚类时,评价指标,即检验机器学习模型效果的定量指标,都是一个不可避免且十分重要的问题。因此,结合scikit-learn主页上的介绍,以及网上大神整理的一些资料,对常用的评价指标及其实现、应用进行简单介绍。 原文见公众号:python宝 

官网介绍:https://scikit-learn.org/stable/modules/classes.html#sklearn-metrics-metrics

二、sklearn.metrics 常用库

from sklearn.metrics import 评价指标函数名称

1、分类指标  

【分类指标】
from sklearn.metrics import roc_curve,roc_auc_score,auc,accuracy_score
from sklearn.metrics import f1_score,classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import precision_score,recall_score,average_precision_score
from sklearn.metrics import log_loss


1.accuracy_score(y_true,y_pre) 
#精度 

2.auc(x, y, reorder=False) 
#ROC曲线下的面积;较大的AUC代表了较好的performance。

3.average_precision_score(y_true, y_score, average='macro', sample_weight=None)
#根据预测得分计算平均精度(AP)

4.brier_score_loss(y_true, y_prob, sample_weight=None, pos_label=None)
# The smaller the Brier score, the better.

5.confusion_matrix(y_true, y_pred, labels=None, sample_weight=None)
#通过计算混淆矩阵来评估分类的准确性 返回混淆矩阵

6.f1_score(y_true, y_pred, labels=None, pos_label=1, average='binary', sample_weight=None)
#F1值 = 2 * (precision * recall) / (precision + recall) ,
#其中,precision(查准率)=TP/(TP+FP) recall(查全率)=TP/(TP+FN)
# #F1可以理解为查准率和查全率的加权,在回归问题中有相应的R2_score
7. log_loss(y_true, y_pred, eps=1e-15, normalize=True, sample_weight=None, labels=None)
#对数损耗,又称逻辑损耗或交叉熵损耗

8.precision_score(y_true, y_pred, labels=None, pos_label=1, average='binary',) :查准率或者精度;precision(查准率)=TP/(TP+FP)

9.recall_score(y_true, y_pred, labels=None, pos_label=1, average='binary', sample_weight=None)
#查全率 ;recall(查全率)=TP/(TP+FN)

10.roc_auc_score(y_true, y_score, average='macro', sample_weight=None)
#计算ROC曲线下的面积就是AUC的值,the larger the better

11.roc_curve(y_true, y_score, pos_label=None, sample_weight=None, drop_intermediate=True)
#计算ROC曲线的横纵坐标值,TPR,FPR
#其中,TPR = TP/(TP+FN) = recall(真正例率,敏感度)      
#FPR = FP/(FP+TN)(假正例率,1-特异性)

2、回归指标 

【回归指标】
from sklearn.metrics import mean_squared_error,median_absolute_error
from sklearn.metrics import r2_score
from sklearn.metrics import explained_variance_score,mean_absolute_error

1.explained_variance_score(y_true, y_pred, sample_weight=None, multioutput='uniform_average')
#回归方差(反应自变量与因变量之间的相关程度)

2.mean_absolute_error(y_true, y_pred, sample_weight=None, multioutput='uniform_average')
#平均绝对误差 

3.mean_squared_error(y_true, y_pred, sample_weight=None, multioutput='uniform_average')
#均方差

4.median_absolute_error(y_true, y_pred)   
#中值绝对误差,MAE 均绝对值误差为什么取绝对值?防止过高和过低的预测相互抵消。

5.r2_score(y_true, y_pred, sample_weight=None, multioutput='uniform_average')  
#R平方值

三、详解评估库  

1、混淆矩阵 confusion-matrix

from sklearn.metrics import confusion_matrix
confusion_matrix = confusion_matrix(y_test, y_predict)
'''
TP(True Positive): 真实为0,预测也为0
FN(False Negative): 真实为0,预测为1
FP(False Positive): 真实为1,预测为0
TN(True Negative): 真实为0,预测也为0
'''

2、分类准确率 accuracy


from sklearn.metrics import accuracy
accuracy = accuracy_score(y_test, y_predict)
'''
所有样本中被预测正确的样本的比率
分类模型总体判断的准确率(包括了所有class的总体准确率)
'''

3、精确率Precision

from sklearn.metrics import precision_score
precision = precision_score(y_test, y_predict)
'''
预测为正类0的准确率TP / ( TP + FP )
'''

4、召回率 recall:真实为0的准确率

from sklearn.metrics import recall_score
recall = recall_score(y_test, y_predict)
#recall得到的是一个list,是每一类的召回率
'''
真实为0的准确率 Recall = TP/(TP+FN)
真实为1的准确率 Recall = TN/(TN+FP)
'''

5、F1值


from sklearn.metrics import f1_score
f1_score(y_test, y_predict)
'''
用来衡量二分类模型精确度的一种指标。它同时兼顾了分类模型的准确率和召回率。
F1分数可以看作是模型准确率和召回率的一种加权平均,它的最大值是1,最小值是0。
'''

6、Roc曲线、AUC

sklearn.metrics.roc_curve(y_true,y_score, pos_label=None, sample_weight=None, drop_intermediate=True)
#该函数返回这三个变量:fpr,tpr,和阈值thresholds;
'''
样本中的真实正例类别总数即TP+FN
TPR即True Positive Rate,TPR = TP/(TP+FN)。
TPR:真实的正例0中,被预测为正例的比例

样本中的真实反例类别总数为FP+TN
FPR即False Positive Rate,FPR=FP/(TN+FP)。
FPR:真实的反例1中,被预测为正例的比例
理想分类器TPR=1,FPR=0

截断点thresholds
机器学习算法对test样本进行预测后,可以输出各test样本对某个类别的相似度概率。比如t1是P类别的概率为0.3,一般我们认为概率低于0.5,t1就属于类别N。这里的0.5,就是”截断点”。
'''

        thresholds:分类器的一个重要功能“概率输出”,即表示分类器认为某个样本具有多大的概率属于正样本(或负样本)。“Score”表示每个测试样本属于正样本的概率。

        接下来,我们从高到低,依次将“Score”值作为阈值threshold,当测试样本属于正样本的概率大于或等于这个threshold时,我们认为它为正样本,否则为负样本。每次选取一个不同的threshold,我们就可以得到一组FPR和TPR,即ROC曲线上的一点。当我们将threshold设置为1和0时,分别可以得到ROC曲线上的(0,0)和(1,1)两个点。将这些(FPR,TPR)对连接起来,就得到了ROC曲线。当threshold取值越多,ROC曲线越平滑。其实,我们并不一定要得到每个测试样本是正样本的概率值,只要得到这个分类器对该测试样本的“评分值”即可(评分值并不一定在(0,1)区间)。评分越高,表示分类器越肯定地认为这个测试样本是正样本,而且同时使用各个评分值作为threshold。我认为将评分值转化为概率更易于理解一些。

7、PR曲线

P-R曲线
'''
P-R曲线就是精确率precision vs 召回率recall 曲线,
以recall作为横坐标轴,precision作为纵坐标轴。
PR曲线指的是Precision Recall曲线,中文为查准率-查全率曲线。
PR曲线在分类、检索等领域有着广泛的使用,来表现分类/检索的性能。

注:查准率又名精度,查全率又名召回率。
'''

About Me:小婷儿

 本文作者:小婷儿,专注于python、数据分析、数据挖掘、机器学习相关技术,也注重技术的运用

● 作者博客地址:https://blog.csdn.net/u010986753

 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

 版权所有,欢迎分享本文,转载请保留出处

 微信:tinghai87605025 联系我加微信群

 QQ:87605025

 QQ交流群py_data 483766429

 公众号:python宝 或 DB宝

 提供OCP、OCM和高可用最实用的技能培训

● 题目解答若有不当之处,还望各位朋友批评指正,共同进步

如果您觉得到文章对您有帮助,欢迎赞赏哦!有您的支持,小婷儿一定会越来越好!

你可能感兴趣的:(【074】算法评估库 sklearn.metrics)