Yellowbrick新手入门简介:用于Python机器学习模型可视化的工具库

news2024/11/24 0:11:39

Yellowbrick 是一个新的 Python 库,它扩展了 Scikit-Learn API,将可视化合并到机器学习工作流程中。

Yellowbrick需要依赖诸多第三方库,包括Scikit-Learn,Matplotlib,Numpy等等。

Yellowbrick 是一个开源的纯 Python 项目,它通过可视化分析和诊断工具扩展了 Scikit-Learn。Yellowbrick API 还包装了 matplotlib 以创建可发布的图形和交互式数据探索,同时仍然允许开发人员对图形进行细粒度控制。对于用户来说,Yellowbrick 可以帮助评估机器学习模型的性能、稳定性和预测价值,并协助诊断整个机器学习工作流程中的问题。

最近,大部分工作流程已通过网格搜索方法、标准化 API 和基于 GUI 的应用程序实现自动化。然而,在实践中,人类的直觉和指导可以比详尽的搜索更有效地磨练质量模型。通过可视化模型选择过程,数据科学家可以转向最终的、可解释的模型,并避免陷阱。

Yellowbrick 库是一个用于机器学习的诊断可视化平台,允许数据科学家引导模型选择过程。Yellowbrick 使用新的核心对象扩展了 Scikit-Learn API:可视化工具。可视化工具允许视觉模型作为 Scikit-Learn Pipeline 流程的一部分进行拟合和转换,从而在整个高维数据转换过程中提供视觉诊断。

机器学习可视化将帮助我们了解机器学习结果并知道应该采取哪些行动来改进模型。这就是 Yellowbrick 使命。

Yellowbrick让我们可以更轻松地完成下面任务:

1.选择功能

2.调整超参数

3.解释模型的得分

4.可视化文本数据

安装

要安装 Yellowbrick 库,最简单的方法是使用pip以下命令:

pip install yellowbrick

使用Yellowbrick

Yellowbrick API 专门设计用于与 Scikit-Learn 完美配合。以下是 Scikit-Learn 和 Yellowbrick 的典型工作流程示例:

Yellowbrick的教程目录如下,参考网址:

https://pythonhosted.org/yellowbrick/examples/examples.html

图片

下图是Yellowbrick的visualizer模块流程图

图片

特征可视化

在此示例中,我们看到 Rank2D 如何使用特定指标或算法对数据集中的每个特征进行成对比较,然后以左下三角图的形式返回它们的排名:

from yellowbrick.features import Rank2Dvisualizer = Rank2D(features=features, algorithm='covariance')visualizer.fit(X, y)                # Fit the data to the visualizervisualizer.transform(X)             # Transform the datavisualizer.poof()                   # Draw/show/poof the data

拥有更多的功能并不总是等同于更好的模型。模型具有的特征越多,模型对方差引起的误差越敏感。因此,我们希望选择生成有效模型所需的最少特征。

消除特征的常见方法是消除对模型最不重要的特征。然后我们重新评估模型在交叉验证期间是否确实表现更好。

特征重要性非常适合此任务,因为它可以帮助我们可视化模型特征的相对重要性。

from yellowbrick.model_selection import FeatureImportances
viz = FeatureImportances(model)viz.fit(X, y)viz.show()

图片

看来光是 DecisionTreeClassifier 最重要的特征,其次是 CO2、温度。

考虑到我们的数据中没有太多特征,我们不会消除湿度。但如果我们的模型中有很多特征,我们应该消除对模型不重要的特征,以防止由于方差而产生错误。

下图是其他yellowbrick特征可视化的例子

图片

模型可视化

在此示例中,我们实例化一个 Scikit-Learn 分类器,然后使用 Yellowbrick 的 ROCAUC 类来可视化分类器的敏感性和特异性之间的权衡:

from sklearn.svm import LinearSVCfrom yellowbrick.classifier import ROCAUCmodel = LinearSVC()model.fit(X,y)visualizer = ROCAUC(model)visualizer.score(X,y)visualizer.poof()

图片

可视化数据

排名特点

数据中每对特征的相关性如何?特征的二维排序利用一次考虑特征对的排序算法。我们使用皮尔逊相关性进行评分来检测共线性关系。

from yellowbrick.features import Rank2D
visualizer = Rank2D(algorithm='pearson')visualizer.fit(X, y)           visualizer.transform(X)        visualizer.show()

图片

根据数据,湿度与相对湿度密切相关。光与温度密切相关。这是有道理的,因为这些功能通常是齐头并进的。

类别平衡

分类模型面临的最大挑战之一是训练数据中类别的不平衡。对于不平衡的类别,我们的高 f1 分数可能不是一个好的评估分数,因为分类器可以简单地猜出所有大多数类别获得高分。

因此,可视化类别的分布非常重要。我们可以利用ClassBalance条形图来可视化类别的分布。

图片

看起来未占用的数据比已占用的数据多得多。知道了这一点,我们可以利用多种技术来处理类别不平衡,例如分层抽样、加权以获得更多信息的结果。

可视化模型的结果

现在我们回到这个问题:98% 的 f1 分数到底意味着什么?f1 分数的增加是否会为您的公司带来更多利润?

Yellowbrick 提供了多种工具,可用于可视化分类问题的结果。其中一些您可能听说过或没有听说过,这对于解释您的模型非常有帮助。

混淆矩阵

空缺类别中错误预测的百分比是多少?占领阶层中错误预测的百分比是多少?混淆矩阵帮助我们回答这个问题。

图片

看起来占领阶层的错误预测比例更高;因此,我们可以尝试增加占用类中正确预测的数量来提高分数。

这是yellowbrick其它模型得分可视化例子。

图片

我们如何改进模型?

现在我们了解了模型的性能,我们如何改进模型呢?为了改进我们的模型,我们可能想要

  • 防止我们的模型拟合不足或过度拟合

  • 找到对估算器来说最重要的特征

我们将探索 Yellowbrick 提供的工具来帮助我们弄清楚如何改进我们的模型

验证曲线

一个模型可以有许多超参数。我们可以选择准确预测训练数据的超参数。找到最佳超参数的好方法是通过网格搜索选择这些参数的组合。

但我们如何知道这些超参数也能准确预测测试数据呢?绘制单个超参数对训练和测试数据的影响非常有用,以确定估计器对于某些超参数值是否欠拟合或过拟合。

验证曲线可以帮助我们找到最佳点,低于或高于此超参数的值将导致数据拟合不足或过度拟合。

from yellowbrick.model_selection import validation_curve
viz = validation_curve(    model, X, y, param_name="max_depth",    param_range=np.arange(1, 11), cv=10, scoring="f1",)

图片

从图中我们可以看出,虽然最大深度数越高,训练得分越高,但交叉验证得分也越低。这是有道理的,因为决策树越深,就越容易过度拟合。

因此,最佳点将是交叉验证分数不降低的地方,即 1。

学习曲线

更多的数据会带来更好的模型性能吗?并非总是如此,估计器可能对方差引起的误差更敏感。这就是学习曲线有用的时候。

学习 曲线显示了具有不同数量训练样本的估计器的训练分数与交叉验证测试分数之间的关系。

from yellowbrick.model_selection import LearningCurvefrom sklearn.model_selection import StratifiedKFold
#Create the learning curve visualizercv = StratifiedKFold(n_splits=12)sizes = np.linspace(0.3, 1.0, 10)
visualizer = LearningCurve(    model, cv=cv, scoring='f1', train_sizes=sizes, )
visualizer.fit(X, y)        # Fit the data to the visualizervisualizer.show()           # Finalize and render the figure

图片

从图中我们可以看到,大约 8700 个训练实例的数量导致了最佳的 f1 分数。训练实例数量越多,f1 分数越低。

Yellowbrick使用还有很多,不局限上述介绍。下图是Yellowbrick展示随着模型搜索空间变大,时间以指数级增长。

图片

下图是Yellowbrick展示超参空间搜索

图片

图片

结论

恭喜!您刚刚学习了如何创建绘图来帮助您解释模型的结果。能够了解您的机器学习结果将使您更容易找到提高其性能的后续步骤。欢迎大家收藏CSDN学院课程《从0到1 Python数据科学之旅》,课程有大量数据科学建模实际案例,大家记得收藏课程。

版权声明:文章来自公众号(python风控模型),未经许可,不得抄袭。遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/904918.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

resource doesn‘t have a corresponding Go package.

resource doesnt have a corresponding Go package. GO这个鬼东西不能直接放src下。 ************ Building Go project: ProjectGoTest ************with GOPATH: D:\Go;D:\eclipse-jee-oxygen-2-win32-x86_64\workspace\ProjectGoTest >> Running: D:\Go\bin\go.exe …

项目管理实战笔记1:项目管理常识

序 看了下极客时间的《项目管理实战》,觉得跟之前学习PMP的标准资料还是有所侧重。重新整理下,相比书上繁杂的知识,这个更通俗易懂。 1 角色转换:三大误区 误区1:事必躬亲 自己做事情是可控的,做项目依赖…

树莓派第一讲:入门那些事(系统烧录、外设连接)

目录 基本了解: 系统烧录: 连接外设: 基本了解: 树莓派4B是一款单板计算机,采用ARM架构处理器,配备4GB内存、Gigabit以太网口、多个USB接口、HDMI输出接口等。它具备1.5Ghz运行的64位四核处理器&#x…

通过安全日志读取WFP防火墙放行日志

前言 之前的文档中,描写了如何对WFP防火墙进行操作以及如何在防火墙日志中读取被防火墙拦截网络通讯的日志。这边文档,着重描述如何读取操作系统中所有被放行的网络通信行为。 读取系统中放行的网络通信行为日志,在win10之后的操作系统上&am…

vmware17 开启虚拟化

前言 有时候需要在虚拟机上安装虚拟机,方便做一些测试 解决办法 在vmware17 上对虚拟机开启虚拟化即可 下图中都勾上即可 设置完成之后就可以在虚拟机上安装虚拟机

【LLM评估篇】Ceval | rouge | MMLU等指标

note 一些大模型的评估模型:多轮:MTBench关注评估:agent bench长文本评估:longbench,longeval工具调用评估:toolbench安全评估:cvalue,safetyprompt等 文章目录 note常见评测benchm…

18.安全机制

文章目录 安全机制认证(Authentication)鉴权(Authorization)概念和组成创建Role和ClusterRole创建RoleBinding 和ClusterRoleBindingResources 准入控制(Admission Control)实验:创建一个用户管…

模型微调(fine-tune)

一、关于模型微调的一些基础知识 1、模型微调(fine-tune) 微调(fine-tune)通过使用在大数据上得到的预训练好的模型来初始化自己的模型权重,从而提升精度。这就要求预训练模型质量要有保证。微调通常速度更快、精度更高。当然,自己…

解放数据库,实时数据同步利器:Alibaba Canal

文章首发地址 Canal是一个开源的数据库增量订阅&消费组件,主要用于实时数据同步和数据订阅的场景,特别适用于构建分布式系统、数据仓库、缓存更新等应用。它支持MySQL、阿里云RDS等主流数据库,能够实时捕获数据库的增删改操作&#xff…

nvm的安装配置(node多版本切换控制)

安装 1. 首先要先卸载已安装的node 找到node,卸载就可以。 2. 下载 NVM 直接进入安装包下载地址:https://github.com/coreybutler/nvm-windows/releases,选择 nvm-setup.zip,下载后直接安装。 3. 配置环境变量(有的电脑会配好…

linux学习(文件系统+inode)[14]

输出重定向可分离 stdout -> 1printf("hello printf 1\n");fprintf(stdout,"hello fprintf 1\n");// stderr -> 2errno 1;perror("hello perror 2"); //stderrconst char *s1 "hello write 1\n";write(1, s1, strlen(s1));con…

PV3D: A 3D GENERATIVE MODEL FOR PORTRAITVIDEO GENERATION 【2023 ICLR】

ICLR:International Conference on Learning Representations CCF-A 国际表征学习大会:深度学习的顶级会议 生成对抗网络(GANs)的最新进展已经证明了生成令人惊叹的逼真肖像图像的能力。虽然之前的一些工作已经将这种图像gan应用于无条件的2D人像视频生…

人工智能轨道交通行业周刊-第56期(2023.8.14-8.20)

本期关键词:数字化建设、巡检机器人、智慧城轨、福州地铁4号线、避雷器、LangChain 1 整理涉及公众号名单 1.1 行业类 RT轨道交通人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网上榜铁路视点ITS World轨道交通联盟VSTR铁路与城市轨道交通RailMet…

vactor中迭代器失效问题

目录 什么是迭代器失效导致迭代器失效的操作VS和g环境下对与迭代器失效的态度 什么是迭代器失效 迭代器的底层其实就是一个指针,或者对指针进行了封装 vector的迭代器就是一个指针T* 一个迭代器指向某一个空间,此时这块空间被释放了,这个迭…

【Spring Boot】详解条件注解以及条件拓展注解@Conditional与@ConditionOnXxx

Spring Conditional Spring 4.0提供的注解。作用是给需要装载的Bean增加一个条件判断。只有满足条件才会装在到IoC容器中。而这个条件可以由自己去完成的,可以通过重写Condition接口重写matches()方法去实现自定义的逻辑。所以说这个注解增加了对Bean装载的灵活性。…

OJ练习第153题——分发糖果

分发糖果 力扣链接:135. 分发糖果 题目描述 n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求,给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。 相邻两个孩子评分更高的孩子会获得更多的糖果。…

一篇文章搞懂MVCC

事务 什么是事务?当事务对数据库进行多个更改时,要么在事务提交时所有更改都成功,要么在事务回滚时所有更改都被撤销。 在 MySQL 中,事务支持是在引擎层实现的。MySQL 是一个支持多引擎的系统,但并不是所有的引擎都支…

详解反向迭代器适配器

目录 一、基本介绍 二、模拟实现 2.1 - operator* 2.2 - vector 和 list 的反向迭代器 一、基本介绍 反向迭代器适配器(reverse_iterator),可简称为反向迭代器或逆向迭代器,常用来对容器进行反向遍历。 反向迭代器底层只能选…

Qt安卓开发经验技巧总结V202308

01:01-05 pro中引入安卓拓展模块 QT androidextras 。pro中指定安卓打包目录 ANDROID_PACKAGE_SOURCE_DIR $$PWD/android 指定引入安卓特定目录比如程序图标、变量、颜色、java代码文件、jar库文件等。 AndroidManifest.xml 每个程序唯一的一个全局配置文件&…

史上最简洁实用人工神经元网络c++编写202301

这是史上最简单、清晰…… C语言编写的 带正向传播、反向传播(Forward ……和Back Propagation)……任意Nodes数的人工神经元神经网络……。 大一学生、甚至中学生可以读懂。 适合于,没学过高数的程序员……照猫画虎编写人工智能、深度学习之神经网络……