python模型性能ROC和AUC分析详解

 更新时间:2023年03月22日 16:11:47   作者:冷冻工厂  
这篇文章主要为大家介绍了python模型性能ROC和AUC分析详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

正文

本文将介绍模型性能分析的两个方法:ROC & AUC。

ROC 分析和曲线下面积 (AUC) 是数据科学中广泛使用的工具,借鉴了信号处理,用于评估不同参数化下模型的质量,或比较两个或多个模型的性能。

传统的性能指标,如准确率和召回率,在很大程度上依赖于正样本的观察。因此,ROC 和 AUC 使用真阳性率和假阳性率来评估质量,同时考虑到正面和负面观察结果。

从分解问题到使用机器学习解决问题的过程有多个步骤。它涉及数据收集、清理和特征工程、构建模型,最后是,评估模型性能。

当您评估模型的质量时,通常会使用精度和召回率等指标,也分别称为数据挖掘领域的置信度和灵敏度。

这些指标将预测值与通常来自保留集的实际观察值进行比较,使用混淆矩阵进行可视化。

让我们首先关注精度,也称为阳性预测值。使用混淆矩阵,您可以将 Precision 构建为所有真实阳性与所有预测阳性的比率。

召回率,也称为真阳性率,表示真阳性与观察到的和预测的所有阳性的比率。

使用混淆矩阵中的不同观察集来描述 PrecisionRecall,您可以开始了解这些指标如何提供模型性能的视图。

值得注意的是 Precision 和 Recall 只关注正例和预测,而不考虑任何负例。此外,他们不会将模型的性能与中值场景进行比较,中值场景只是随机猜测。

1. ROC 曲线

ROC 作为汇总工具,用于可视化 Precision 和 Recall 之间的权衡。ROC 分析使用 ROC 曲线来确定二进制信号的值有多少被噪声污染,即随机性。它为连续预测器提供了一系列操作点的灵敏度和特异性摘要。ROC 曲线是通过绘制 x 轴上的假阳性率与 y 轴上的真阳性率来获得的。

由于真阳性率是检测信号的概率,而假阳性率是误报的概率,因此 ROC 分析也广泛用于医学研究,以确定可靠地检测疾病或其他行为的阈值。

一个完美的模型将具有等于 1 的误报率和真阳性率,因此它将是 ROC 图左上角的单个操作点。而最差的可能模型将在 ROC 图的左下角有一个单一的操作点,其中误报率等于 1,真阳性率等于 0。

随机猜测模型有 50% 的机会正确预测结果,因此假阳性率将始终等于真阳性率。这就是为什么图中有一条对角线,代表检测信号与噪声的概率为 50/50。

2. AUC 面积

要全面分析 ROC 曲线并将模型的性能与其他几个模型进行比较,您实际上需要计算曲线下面积 (AUC),在文献中也称为 c 统计量。曲线下面积 (AUC) 的值介于 0 和 1 之间,因为曲线绘制在 1x1 网格上,并且与信号理论平行,它是信号可检测性的度量。

这是一个非常有用的统计数据,因为它可以让我们了解模型对真实观察结果和错误观察结果的排名有多好。它实际上是 Wilcoxon-Mann-Whitney 秩和检验的归一化版本,它检验零假设,其中两个有序测量样本是从单个分布 中抽取的。

要绘制 ROC 曲线并计算曲线下面积 (AUC),您决定使用 SckitLearn 的 RocCurveDisplay 方法并将多层感知器与随机森林模型进行比较,以尝试解决相同的分类任务。

import matplotlib.pyplot as plt
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import roc_auc_score, RocCurveDisplay
def plot_roc(model, test_features, test_targets):
    """
    Plotting the ROC curve for a given Model and the ROC curve for a Random Forests Models
    """
    # comparing the given model with a Random Forests model
    random_forests_model = RandomForestClassifier(random_state=42)
    random_forests_model.fit(train_features, train_targets)
    rfc_disp = RocCurveDisplay.from_estimator(random_forests_model, test_features, test_targets)
    model_disp = RocCurveDisplay.from_estimator(model, test_features, test_targets, ax=rfc_disp.ax_)
    model_disp.figure_.suptitle("ROC curve: Multilayer Perceptron vs Random Forests")
    plt.show()
# using perceptron model as input
plot_roc(ml_percetron_model, test_features, test_targets)

欢迎Star -> 学习目录

以上就是python模型性能ROC和AUC分析详解的详细内容,更多关于python模型性能ROC AUC的资料请关注脚本之家其它相关文章!

相关文章

  • python re正则表达式模块(Regular Expression)

    python re正则表达式模块(Regular Expression)

    Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作,在文本解析、复杂字符串分析和信息提取时是一个非常有用的工具.
    2014-07-07
  • Python计算时间间隔(精确到微妙)的代码实例

    Python计算时间间隔(精确到微妙)的代码实例

    今天小编就为大家分享一篇关于Python计算时间间隔(精确到微妙)的代码实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • Python 实现文件读写、坐标寻址、查找替换功能

    Python 实现文件读写、坐标寻址、查找替换功能

    这篇文章主要介绍了Python 实现文件读写、坐标寻址、查找替换功能,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2019-09-09
  • Python Json与pickle模块序列化使用介绍

    Python Json与pickle模块序列化使用介绍

    这篇文章主要为大家介绍了Python中常用的两个序列化模块:pickle序列化和json序列化。文中的示例代码讲解详细,感兴趣的小伙伴可以学习一下
    2022-10-10
  • python3使用mutagen进行音频元数据处理的方法

    python3使用mutagen进行音频元数据处理的方法

    mutagen是一个处理音频元数据的python模块,支持多种音频格式,是一个纯粹的python库,仅依赖python标准库,可在Python 3.7及以上版本运行,支持Linux、Windows 和 macOS系统,这篇文章主要介绍了python3使用mutagen进行音频元数据处理,需要的朋友可以参考下
    2022-10-10
  • Python在Excel中添加数据条的代码详解

    Python在Excel中添加数据条的代码详解

    在Excel中添加数据条是一种数据可视化技巧,它通过条形图的形式在单元格内直观展示数值的大小,尤其适合比较同一列或行中各个单元格的数值,本文将介绍如何使用Python在Excel中的指定单元格区域添加数据条,需要的朋友可以参考下
    2024-10-10
  • Python中psutil模块使用汇总

    Python中psutil模块使用汇总

    psutil模块是一个跨平台库,用于检索Python中运行进程和系统利用率(CPU、内存、磁盘、网络、传感器)的信息。它主要用于系统监视、分析和限制进程资源以及管理正在运行的进程,本文给大家介绍Python中psutil模块使用汇总,感兴趣的朋友一起看看吧
    2021-12-12
  • Python读取postgresql数据库详情

    Python读取postgresql数据库详情

    这篇文章主要介绍了Python读取postgresql数据库详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • python使用Tkinter实现在线音乐播放器

    python使用Tkinter实现在线音乐播放器

    这篇文章主要为大家详细介绍了python使用Tkinter实现在线音乐播放器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • Pandas实现groupby分组统计方法实例

    Pandas实现groupby分组统计方法实例

    在数据处理的过程,有可能需要对一堆数据分组处理,例如对不同的列进行agg聚合操作(mean,min,max等等),下面这篇文章主要给大家介绍了关于Pandas实现groupby分组统计方法的相关资料,需要的朋友可以参考下
    2023-06-06

最新评论