scikit-learn 关于 auc 的 函数

二值分类器(Binary Classifier)是机器学习领域中最常见也是应用最广泛的分类器。评价二值分类器的指标很多,比如 precision、recall、F1 score、P-R 曲线 等。但也这些指标或多或少只能反映模型在某一方面的性能。相比而言,ROC 曲线则有很多优点,经常作为评估二值分类器最重要的指标之一。

ROC曲线是 Receiver Operating Characteristic Curve 的简称,中文名为“受试者工作特征曲线”。ROC 曲线源于军事领域,而后在医学领域应用甚广,“受试者工作特征曲线”这一名称也正是来自于医学领域。

  • 混淆矩阵
预测 N 预测 P
真实 N TN FP
真实 P FN TP
  • ROC曲线的横坐标为假阳性率(False Positive Rate,FPR)。FPR 的计算方法为:

FPR = \cfrac{FP}{TN + FP}

  • 纵坐标为真阳性率(True Positive Rate,TPR)。TPR 的计算方法为:

TPR = \cfrac{TP}{FN + TP}

说明:“召回率”即“真阳性率”,含义为真实是 P 的那些数据里预测对的比例。

roc_curve

https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_curve.html#sklearn.metrics.roc_curve

>>> import numpy as np
>>> from sklearn.metrics import roc_curve
>>> y = np.array([1, 1, 2, 2])
>>> scores = np.array([0.1, 0.4, 0.35, 0.8])
>>> fpr, tpr, thresholds = roc_curve(y, scores, pos_label=2)
>>> fpr
array([0. , 0. , 0.5, 0.5, 1. ])
>>> tpr
array([0. , 0.5, 0.5, 1. , 1. ])
>>> thresholds
array([1.8 , 0.8 , 0.4 , 0.35, 0.1 ])

roc_auc_score

https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html#sklearn.metrics.roc_auc_score

>>> import numpy as np
>>> from sklearn.metrics import roc_auc_score
>>> y_true = np.array([0, 0, 1, 1])
>>> y_scores = np.array([0.1, 0.4, 0.35, 0.8])
>>> roc_auc_score(y_true, y_scores)
0.75

auc

https://scikit-learn.org/stable/modules/generated/sklearn.metrics.auc.html

>>> import numpy as np
>>> from sklearn import metrics
>>> y = np.array([1, 1, 2, 2])
>>> pred = np.array([0.1, 0.4, 0.35, 0.8])
>>> fpr, tpr, thresholds = metrics.roc_curve(y, pred, pos_label=2)
>>> metrics.auc(fpr, tpr)
0.75

可以看出,以上两个函数的返回值是一样的,即 auc 曲线下方的面积。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容