sklearn学习:roc_auc曲线和 metrics.roc_auc_score

1.概念

ROC(Receiver Operating Characteristic)曲线和AUC常被用来评价一个二值分类器(binary classifier)的优劣。

AUC(Area Under Curve)被定义为ROC曲线下的面积,显然这个面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围在0.5和1之间。使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好。

2. metrics.roc_auc

sklearn.metrics.roc_curve(y_true, y_score, pos_label=None, sample_weight=None, drop_intermediate=True)

计算ROC值,仅用于二值分类器。

要注意到的参数
pos_label
Label considered as positive and others are considered negative.

此处官方文档,具体意思现在还不是很懂,先存下来
返回值
fpr
array, Increasing false positive rates

tpr
array, Increasing true positive rates

thresholds
array, Decreasing thresholds on the decision function used to compute fpr and tpr.

未完待续……


下面是摘抄和参考的链接们:

official website of roc_curve:
http://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_curve.html

csdn上一个很好的解释
https://blog.csdn.net/shenxiaoming77/article/details/72627882

另一个参考文章
http://alexkong.net/2013/06/introduction-to-auc-and-roc/

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先我们需要了解什么是ROC曲线以及AUCROC曲线指的是接收者操作特征曲线(Receiver Operating Characteristic Curve),常用于二分类问题中评价模型的性能。ROC曲线的横轴是假正率(False Positive Rate, FPR),纵轴是真正率(True Positive Rate, TPR),而AUC(Area Under Curve)指的是ROC曲线下的面积,用于衡量模型预测准确性的指标。AUC的取值范围在0.5到1之间,AUC越大,模型的性能越好。 接下来我们来看看如何使用`sklearn.metrics`中的`roc_auc_score`和`roc_curve`函数。 `roc_auc_score`函数的参数说明: ```python sklearn.metrics.roc_auc_score(y_true, y_score, average='macro', sample_weight=None, max_fpr=None) ``` - `y_true`:真实标签,可以是一个一维数组或列表。 - `y_score`:模型预测的得分,与`y_true`的长度相同。 - `average`:指定AUC计算的方式。默认为`'macro'`,即计算每个类别的AUC值并求平均值。如果设为`'micro'`,则将所有数据合并计算一个AUC值。如果设为`None`,则返回所有类别的AUC值。 - `sample_weight`:样本权重,可以是一个一维数组或列表,长度与`y_true`相同。 - `max_fpr`:最大假正率,用于计算部分AUC值。默认为`None`,即计算完整的ROC曲线下的AUC值。 `roc_curve`函数的参数说明: ```python sklearn.metrics.roc_curve(y_true, y_score, pos_label=None, sample_weight=None, drop_intermediate=True) ``` - `y_true`:真实标签,可以是一个一维数组或列表。 - `y_score`:模型预测的得分,与`y_true`的长度相同。 - `pos_label`:指定正例的标签值。默认为`None`,即将最大的标签设为正例。 - `sample_weight`:样本权重,可以是一个一维数组或列表,长度与`y_true`相同。 - `drop_intermediate`:是否在计算过程中舍弃中间结果。默认为`True`,即只返回阈值和对应的FPR和TPR值,且只包括第一个和最后一个元素。 下面给出一个例子,使用`sklearn.metrics`中的`roc_auc_score`和`roc_curve`函数来评价一个二分类模型的性能: ```python from sklearn.datasets import make_classification from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split from sklearn.metrics import roc_auc_score, roc_curve import matplotlib.pyplot as plt # 生成随机数据 X, y = make_classification(n_samples=1000, n_features=10, n_classes=2, random_state=1) # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1) # 训练模型 model = LogisticRegression() model.fit(X_train, y_train) # 预测测试集 y_pred = model.predict(X_test) y_score = model.predict_proba(X_test)[:, 1] # 计算AUC auc = roc_auc_score(y_test, y_score) print('AUC:', auc) # 计算ROC曲线 fpr, tpr, thresholds = roc_curve(y_test, y_score) # 绘制ROC曲线 plt.plot(fpr, tpr, label='ROC curve (area = %0.2f)' % auc) plt.plot([0, 1], [0, 1], 'k--') plt.xlim([0.0, 1.0]) plt.ylim([0.0, 1.05]) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.title('Receiver operating characteristic example') plt.legend(loc="lower right") plt.show() ``` 在上面的例子中,我们使用`make_classification`函数生成了1000个样本,10个特征和2个类别。然后使用`train_test_split`函数将数据划分为训练集和测试集。接着训练一个逻辑回归模型,并预测测试集的标签和得分。最后使用`roc_auc_score`函数计算AUC值,使用`roc_curve`函数计算ROC曲线的FPR和TPR,并绘制ROC曲线图。 运行上述代码,可以得到以下输出: ``` AUC: 0.9311666666666667 ``` 同时还会出现一个ROC曲线的图像。可以看到该模型的AUC值较高,ROC曲线也比较靠近左上角,说明该模型的预测准确性较好。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值