2.4 sklearn中的metrics.roc_auc_score评价指标
文章目录
- 引言
- 官方案例
- 案例
引言
from sklearn.metrics import roc_auc_scoreroc_auc_score(y_true, y_score, *, average='macro', sample_weight=None,max_fpr=None, multi_class='raise', labels=None)计算曲线ROC的面积- Parameters(参数)y_true : array-like of shape (n_samples,) or (n_samples, n_classes)真实数据二分类和多分类需要带有shape (n_samples)的标签,而多标签情况需要带有shape (n_samples, n_classes)的二进制标签。y_score : array-like of shape (n_samples,) or (n_samples, n_classes)预测结果数据1.在二分类的情况下,它对应于形状数组(n_samples,),可以提供概率估计和非阈值决策值概率估计值对应于具有更大标签的类别的概率,即estimator.classes_ [1],因此是estimator.predict_proba(X,y)[:, 1]。决策值对应于estimator.decision_function(X,y)的输出。2.在多分类情况下,它对应于由predict_proba方法提供的概率估计的形状数组(n_samples,n_classes)每个sample概率估计值为1;此外,每一个sample的概率估计值的顺序必须与y_true中标签的顺序相对应。3.在多标签情况下,它对应于一个形状数组(n_samples,n_classes)。概率估计由predict_proba方法提供,非阈值决策值由decision_function方法提供。average : {‘micro’, ‘macro’, ‘samples’, ‘weighted’} or None, default=’macro’当y_true是二进制时,这个参数将被忽略'macro':简单地计算 binary metrics (二分指标)的平均值,赋予每个类别相同的权重'micro':给每个 sample-class pair (样本类对)对 overall metric (总体指数)(sample-class 权重的结果除外) 等同的贡献。除了对每个类别的 metric 进行求和之外,这个总和构成每个类别度量的 dividends (除数)和 divisors (除数)计算一个整体商。 在 multilabel settings (多标签设置)中,Micro-averaging 可能是优先选择的,包括要忽略 majority class (多数类)的 multiclass classification (多类分类)'weighted': 通过计算其在真实数据样本中的存在来对每个类的 score 进行加权的 binary metrics (二分指标)的平均值来计算类不平衡。'samples':仅适用于多标签问题。它不计算每个类别的 measure,而是计算评估数据中的每个样本的真实和预测类别的 metric (指标),并返回 (sample_weight-weighted) 加权平均。sample_weight :array-like of shape (n_samples,), default=None样品权重sample_weight : array-like of shape (n_samples,), default=None如果不为None,则返回范围为[0,max_fpr]的标准化部分AUC对于多分类情况,max_fpr应该等于None或1.0multi_class:{‘raise’, ‘ovr’, ‘ovo’}, default=’raise’仅用于多分类,默认值会引发错误,因此必须显式传递'ovr'或'ovo''ovr':一对多'ovo':一对一这两个概念想了解的参考为2.逻辑回归部分labels : array-like of shape (n_classes,), default=None 仅用于多分类,标签列表索引了y_score中的类,如果为None,则使用y_true中标签的数字或字典顺序- 返回AUC值
官方案例
二分类情况
>>> from sklearn.datasets import load_breast_cancer
>>> from sklearn.linear_model import LogisticRegression
>>> from sklearn.metrics import roc_auc_score
>>> X, y = load_breast_cancer(return_X_y=True)
>>> clf = LogisticRegression(solver="liblinear", random_state=0).fit(X, y)
>>> roc_auc_score(y, clf.predict_proba(X)[:, 1])
0.99...
>>> roc_auc_score(y, clf.decision_function(X))
0.99...
多分类情况
>>> from sklearn.datasets import load_iris
>>> X, y = load_iris(return_X_y=True)
>>> clf = LogisticRegression(solver="liblinear").fit(X, y)
>>> roc_auc_score(y, clf.predict_proba(X), multi_class='ovr')
0.99...
多标签情况
>>> from sklearn.datasets import make_multilabel_classification
>>> from sklearn.multioutput import MultiOutputClassifier
>>> X, y = make_multilabel_classification(random_state=0)
>>> clf = MultiOutputClassifier(clf).fit(X, y)
>>> # get a list of n_output containing probability arrays of shape
>>> # (n_samples, n_classes)
>>> y_pred = clf.predict_proba(X)
>>> # extract the positive columns for each output
>>> y_pred = np.transpose([pred[:, 1] for pred in y_pred])
>>> roc_auc_score(y, y_pred, average=None)
array([0.82..., 0.86..., 0.94..., 0.85... , 0.94...])
>>> from sklearn.linear_model import RidgeClassifierCV
>>> clf = RidgeClassifierCV().fit(X, y)
>>> roc_auc_score(y, clf.decision_function(X), average=None)
array([0.81..., 0.84... , 0.93..., 0.87..., 0.94...])
案例
import numpy as np
# 模型评估
from sklearn import metricsif __name__ == '__main__':y = np.array([0, 0, 1, 1])y_pred = np.array([0.1, 0.5, 0.3, 0.8])# 返回三个数组结果分别是fpr(假正率),tpr(召回率),threshold(阈值)# 参数为真实结果数据、预测结果数据(可以是标签数据也可以是概率值)fpr, tpr, threshold = metrics.roc_curve(y, y_pred)# 计算AUC的值auc = metrics.auc(fpr, tpr)print(auc)print(metrics.roc_auc_score(y, y_pred))0.75
0.75
当碰到多分类情况时,可以使用one-hot编码,在进行ravel()展平操作,来使用
auc = roc_auc_score(y_one_hot.ravel(), y_score.ravel())
如果对您有帮助,麻烦点赞关注,这真的对我很重要!!!如果需要互关,请评论留言!
2.4 sklearn中的metrics.roc_auc_score评价指标相关推荐
- sklearn中的metrics.roc_auc_score评价指标
参数说明 from sklearn.metrics import roc_auc_score roc_auc_score(y_true, y_score, *, average='macro', sa ...
- sklearn中的metrics
文章目录 MSE 交叉验证 准确率.精度.召回率.F1.AUC 准确率 混淆矩阵 精度.召回率.F1 ROC & AUC 阈值衡量.ROC曲线 阈值选择 ROC曲线 多分类的metrix问题, ...
- sklearn中的支持向量机SVM(下)
1 二分类SVC的进阶 1.1 SVC用于二分类的原理复习 sklearn中的支持向量机SVM(上) 1.2 参数C的理解进阶 有一些数据,可能是线性可分的,但在线性可分状况下训练准确率不能达到100 ...
- 02_混淆矩阵、准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F值(F-Measure) +Roc曲线和PR曲线+sklearn中分类模型评估API+ 自己补充整理
此博文参考: 关于ROC绘制参考博文: https://blog.csdn.net/u011630575/article/details/80250177 Python+ROC相关的博文: https ...
- sklearn中的聚类算法K-Means
1 概述 1.1 无监督学习与聚类算法 决策树.随机森林.逻辑回归虽然有着不同的功能,但却都属于"有监督学习"的一部分,即是说,模型在训练的时候,既需要特征矩阵XXX,也需要真实标 ...
- sklearn中一些参数
转载:http://www.cnblogs.com/chenyaling/p/7826229.html 1.监督学习 1.1.广义线性模型 1.1.1.普通最小二乘法 class sklearn.l ...
- sklearn中的朴素贝叶斯
1 概述 1.1 真正的概率分类器 在许多分类算法应用中,特征和标签之间的关系并非是决定性的.如想预测一个人究竟是否能在泰坦尼克号海难中生存下来,可以建一棵决策树来学习训练集.在训练中,其中一个人的特 ...
- 机器学习 | Sklearn中的朴素贝叶斯全解
前期文章介绍了朴素贝叶斯理论,掌握理论后如何去使用它,是数据挖掘工作者需要掌握的实操技能,下面来看看Sklearn中都有哪些朴素贝叶斯. 朴素贝叶斯是运用训练数据学习联合概率分布 及 ,然后求得后验概 ...
- sklearn中的xgboost_xgboost来了
一.xgboost前奏 1,介绍一下啥是xgboost XGBoost全称是eXtreme Gradient Boosting,即极限梯度提升算法.它由陈天奇所设计,致力于让提升树突破自身的计算极限, ...
- Sklearn中的CV与KFold详解
关于交叉验证,我在之前的文章中已经进行了简单的介绍,而现在我们则通过几个更加详尽的例子.详细的介绍 CV %matplotlib inline import numpy as np from skle ...
最新文章
- 同时支持三个mysql+sqlite+pdo的php数据库类_同时支持三个MySQL+SQLite+PDO的PHP数据库类...
- jsp页面传递参数是如何与javabean进行关联的
- mysql 路由_mysql 命令大全
- MyBatis 插件原理与自定义插件-需求实现
- idea启动日志在哪里_牛逼了!用 IDEA 扒出了开源组件导致FGC的原因
- 16 代码分割之错误边界与Suspense和命名导出
- spring react_使用Spring Cloud Gateway保护React式微服务
- AI+遥感:释放每个像元价值(人工智能应用案例)
- LocalBroadcastManager 的使用
- emctl start dbconsole失败问题的解决
- Python报错:AttributeError
- cURL(wget)—— 测试 RESTful 接口及模拟 GET/POST/PUT/DELETE/OPTIONS 请求
- 代码行数越少就越“简单”吗?
- 大道至简——书摘与思考
- 使用Socket使用域名连接服务器
- 金融数据分析(十三)投资组合问题
- HDU4699 Editor(双栈对弹)
- 如何查看一个人发表的SCI数量
- 当原图片加载失败时,如何让图片加载上我们默认给的图片
- 2020.03.18模拟赛17(第三题)