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

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.rhkb.cn/news/98154.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uploadifive php上传进度条插件 解决动态传参数问题

uploadifive默认只能在加载时,静态传递参数.如果想让用户输入参数.再动态读取.传到后端,是没有直接的办法的 效果图 但我们可以通过settings.formData 来修改配置的方式传参数,完整演示 <form id"file_form{$v.id}" style"display:none"><hr/>…

开源后台管理系统Geekplus Admin

本系统采用前后端分离开发模式&#xff0c;后端采用springboot开发技术栈&#xff0c;mybatis持久层框架&#xff0c;redis缓存&#xff0c;shiro认证授权框架&#xff0c;freemarker模版在线生成代码&#xff0c;websocket消息推送等&#xff0c;后台管理包含用户管理&#xf…

rn和flutter出现“Running Gradle task ‘assembleDebug

在第一次运行rn和flutter时&#xff0c;会卡在Running Gradle task assembleDebug&#xff0c;可以使用阿里的镜像&#xff0c;如下图&#xff1a; maven { url https://maven.aliyun.com/repository/google/ } google() maven { url https://maven.aliyun.com/repository/jcen…

【NAS群晖drive异地访问】使用cpolar远程访问内网Synology Drive「内网穿透」

文章目录 前言1.群晖Synology Drive套件的安装1.1 安装Synology Drive套件1.2 设置Synology Drive套件1.3 局域网内电脑测试和使用 2.使用cpolar远程访问内网Synology Drive2.1 Cpolar云端设置2.2 Cpolar本地设置2.3 测试和使用 3. 结语 前言 群晖作为专业的数据存储中心&…

无涯教程-TensorFlow - 分布式计算

本章将重点介绍如何开始使用分布式TensorFlow&#xff0c;目的是帮助开发人员了解重复出现的基本分布式TF概念&#xff0c;如TF服务器。无涯教程将使用Jupyter Notebook分布式TensorFlow。 第1步 - 导入分布式计算必需的必要模块- import tensorflow as tf 第2步 - …

Linux 系统编程拾遗

Linux 系统编程拾遗 进程的创建 进程的创建 fork()、exit()、wait()以及execve()的简介 创建新进程&#xff1a;fork()

Python自动化小技巧18——自动化资产月报(word设置字体表格样式,查找替换文字)

案例背景 每月都要写各种月报&#xff0c;经营管理月报&#xff0c;资产月报.....这些报告文字目标都是高度相似的&#xff0c;只是需要替换为每个月的实际数据就行&#xff0c;如下&#xff1a; (打码是怕信息泄露.....) 可以看到&#xff0c;这个报告的都是高度模板化&…

超实用的两款截图工具(FastStone Capture 和 Snipaste)

文章目录 一、概述1&#xff09;FastStone Capture2&#xff09;Snipaste 二、FastStone Capture 和 Snipaste 截图软件安装 一、概述 "FastStone Capture" 和 "Snipaste" 都是计算机上常用的截图工具&#xff0c;用于捕捉屏幕截图、编辑图像以及进行屏幕…

vite打包配置以及性能优化

vite打包配置以及性能优化 安装插件 首先该安装的插件&#xff0c;你要安装一下吧 这三个是基本的插件&#xff0c;其他优化的插件下面会介绍到 "vite": "4.4.6","vite-plugin-html": "^3.2.0","vitejs/plugin-vue": &qu…

【最新可用】VMware中ubuntu与主机window之间使用共享文件夹传输大文件

一、VMware设置共享文件夹 &#xff08;1&#xff09;虚拟机关机情况下&#xff0c;创建一个共享文件夹 &#xff08;2&#xff09;ubuntu中挂载共享文件夹 1、如果之前已经挂载 hgfs&#xff0c;先取消挂载 sudo umount /mnt/hgfs2、重新使用以下命令挂载 sudo /usr/bin/vmh…

Ubuntu安装Apache+Php

环境&#xff1a;ubuntu 22.04 虚拟机 首先更新一下 sudo apt-get update sudo apt-get upgrade安装Apache2&#xff1a; sudo apt-get install apache2 输入y&#xff0c;继续。等着他恐龙抗浪抗浪的下载安装就好了 打开浏览器访问http://localhost/ 安装php&#xff1a; …

Dockerfile概念、镜像原理、制作及案例讲解

1.Docker镜像原理 Linux文件操作系统讲解 2.镜像如何制作 3.Dockerfile概念 Docker网址&#xff1a;https://hub.docker.com 3.1 Dockerfile关键字 4.案例

pytest的fixture梳理

fixture特性 夹具是在测试中用于提供共享资源、设置测试环境或模拟行为的工具。 1. 可以重复使用&#xff0c;多个用例可以使用同一个fixture 2. 一个测试用例可以使用多个装置 import pytest # Arrange pytest.fixture def first_entry():return "a"# Arrange pyt…

DNNGP、DeepGS 和 DLGWAS模型构成对比

一、DNNGP DNNGP 是基于深度卷积神经网络&#xff0c;这个结构包括一个输入层&#xff0c;三个卷积层&#xff0c;一个批标准化层&#xff0c;两个dropout层&#xff0c;一个平坦化层&#xff0c;一个 dense层。 dropout层&#xff1a;在神经网络中,dropout层是一个非常有效的正…

个性化定制界面 VS 极简版原装界面:你更喜欢哪一个?为什么?

文章目录 每日一句正能量前言自己的喜好使用这种界面的原因这种界面对你的影响后记 每日一句正能量 不管昨天、今天、明天&#xff0c;能豁然开朗就是最美好的一天。 前言 个性化定制界面和极简版原装界面&#xff0c;哪一个你用起来更加顺手呢&#xff0c;相比之下你更喜欢哪一…

利用Figlet工具创建酷炫Linux Centos8服务器-登录欢迎界面-SHELL自动化编译安装代码

因为我们需要生成需要的特定字符,所以需要在当前服务器中安装Figlet,默认没有安装包的,其实如果我们也只要在一台环境中安装,然后需要什么字符只要复制到需要的服务器中,并不需要所有都安装。同样的,我们也可以利用此生成的字符用到脚本运行的开始起头部分,用ECHO分行标…

解决Java中的“Unchecked cast: java.lang.Object to java.util.List”问题

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

C++入门:函数缺省参数与函数重载

目录 1.函数缺省参数 1.1 缺省参数概念 1.2 缺省参数分类 2.函数重载 2.1 函数重载概念 2.2 C支持函数重载的原理 1.函数缺省参数 1.1 缺省参数概念 缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时&#xff0c;如果没有指定实 参则采用该形参的…

python 自动化学习(四) pyppeteer 浏览器操作自动化

背景 之前我在工作中涉及到了很多地方都是重复性的页面点点点工作&#xff0c;又因为安全保密原则不开放接口和数据库&#xff0c;只有一个页面来提供点击进行操作&#xff0c;就想着用前面学的自动化来实现&#xff0c;但发现前面学的模拟操作对浏览器来说并没有那么友好&…

【C# 基础精讲】LINQ to Objects查询

LINQ to Objects是LINQ技术在C#中的一种应用&#xff0c;它专门用于对内存中的对象集合进行查询和操作。通过使用LINQ to Objects&#xff0c;您可以使用统一的语法来查询、过滤、排序、分组等操作各种.NET对象。本文将详细介绍LINQ to Objects的基本概念、常见的操作和示例&am…