Yellowbrick 用于用更少的代码创建机器学习图
数据可视化在机器学习中扮演着重要的角色。
机器学习中的数据可视化用例包括:
- 超参数调整
- 模型性能评估
- 验证模型假设
- 寻找异常值
- 选择最重要的特征
- 识别特征之间的模式和相关性
与机器学习中的上述关键事物直接相关的可视化称为 机器学习可视化.
创建机器学习可视化有时是一个复杂的过程,因为即使使用 Python 也需要编写大量代码。 但是,感谢 Python 的开源 黄砖 库,甚至可以用更少的代码创建复杂的机器学习可视化。 该库扩展了 Scikit-learn API,并为 Scikit-learn 未提供的可视化诊断提供了高级功能。
今天,我将详细讨论以下类型的机器学习可视化、它们的用例和 Yellowbrick 实现。
Yellowbrick ML 可视化
-----------------------------
01. 主成分图
02. 验证曲线
03. 学习曲线
04. 肘部图
05. 剪影图
06. 类别不平衡图
07. 残差图
08. 预测误差图
09. 库克距离图
10. 特征重要性图
装置
可以通过运行以下命令之一来安装 Yellowbrick。
- 点子 包安装程序:
pip 安装 Yellowbrick
- 康达 包安装程序:
conda 安装-c Districtdatalabs Yellowbrick
使用黄砖
Yellowbrick 可视化工具具有类似 Scikit-learn 的语法。 可视化工具是从数据中学习以生成可视化的对象。 它通常与 Scikit-learn 估算器一起使用。 为了训练可视化工具,我们调用它的 fit() 方法。
保存情节
要保存使用 Yellowbrick 可视化工具创建的绘图,我们按如下方式调用 show() 方法。 这会将绘图保存为磁盘上的 PNG 文件。
可视化工具.show(outpath =“name_of_the_plot.png”)
用法
主成分图在 2D 或 3D 散点图中可视化高维数据。 因此,该图对于识别高维数据中的重要模式非常有用。
黄砖实现
使用传统方法创建此图既复杂又耗时。 我们需要先将 PCA 应用于数据集,然后使用 matplotlib 库创建散点图。
相反,我们可以使用 Yellowbrick 的 PCA 可视化器类来实现相同的功能。 它利用主成分分析方法,将数据集降维并用2或3行代码创建散点图! 我们需要做的就是在 PCA() 类中指定一些关键字参数。
让我们举个例子来进一步理解这一点。 在这里,我们使用 乳腺癌 数据集(见 引 最后)它有 30 个特征和两个类的 569 个样本(恶性 和 良性). 由于数据中的高维度(30 个特征),除非我们将 PCA 应用于数据集,否则不可能在 2D 或 3D 散点图中绘制原始数据。
以下代码解释了我们如何利用 Yellowbrick 的 PCA 可视化工具创建 2 维数据集的二维散点图。
我们还可以通过设置创建 3D 散点图 projection=3
在 PCA() 类中。
PCA 可视化器最重要的参数包括:
- 规模: 布尔值,默认
True
. 这表明数据是否应该缩放。 我们应该在运行 PCA 之前缩放数据。 学习更多关于 相关信息. - 投影: int,默认为2。当
projection=2
, 二维散点图被创建。 什么时候projection=3
, 一个 3D 散点图被创建。 - 类: 列表,默认
None
. 这表示 y 中每个类的类标签。 类名将是图例的标签。
用法
验证曲线绘制了 a 的影响 单 训练集和验证集上的超参数。 通过查看曲线,我们可以确定模型对于给定超参数的指定值的过拟合、欠拟合和恰到好处的情况。 当有多个超参数需要一次调优时,验证曲线就不能用了。 Instated,您可以使用网格搜索或随机搜索。
黄砖实现
使用传统方法创建验证曲线既复杂又耗时。 相反,我们可以使用 Yellowbrick 的 ValidationCurve 可视化工具。
为了在 Yellowbirck 中绘制验证曲线,我们将使用相同的方法构建一个随机森林分类器 乳腺癌 数据集(见 引 在最后)。 我们将绘制的影响 最大深度 随机森林模型中的超参数。
下面的代码解释了我们如何利用 Yellowbrick 的 ValidationCurve 可视化工具来创建验证曲线 乳腺癌 数据集。
模型开始过度拟合 最大深度 值 6. 当 max_depth=6
,该模型非常适合训练数据,并且在新的未见数据上也具有很好的泛化能力。
ValidationCurve 可视化工具最重要的参数包括:
- 估算器: 这可以是任何 Scikit-learn ML 模型,例如决策树、随机森林、支持向量机等。
- 参数名称: 这是我们要监控的超参数的名称。
- 参数范围: 这包括可能的值 参数名称.
- 简历: int,定义交叉验证的折叠数。
- 得分: 细绳, 包含模型的评分方法。 对于分类, 是优选的。
用法
学习曲线绘制了训练和验证错误或准确度与时期数或训练实例数的关系。 您可能认为学习曲线和验证曲线看起来相同,但迭代次数绘制在学习曲线的 x 轴上,而超参数的值绘制在验证曲线的 x 轴上。
学习曲线的用途包括:
- 学习曲线用于检测 不合身, 过度拟合 和 正好 模型的条件。
- 学习曲线用于识别 s低收敛性, 摆动的, 震荡发散 和 适当收敛 寻找神经网络或 ML 模型的最佳学习率时的场景。
- 学习曲线用于查看我们的模型从添加更多训练数据中获益多少。 以这种方式使用时,x 轴显示训练实例的数量。
黄砖实现
使用传统方法创建学习曲线既复杂又耗时。 相反,我们可以使用 Yellowbrick 的 LearningCurve 可视化工具。
为了在 Yellowbirck 中绘制学习曲线,我们将使用相同的方法构建支持向量分类器 乳腺癌 数据集(见 引 最后)。
下面的代码解释了我们如何利用 Yellowbrick 的 LearningCurve 可视化工具来创建验证曲线 乳腺癌 数据集。
该模型不会从添加更多训练实例中获益。 该模型已经用 569 个训练实例进行了训练。 在 175 个训练实例之后,验证准确性没有提高。
LearningCurve 可视化工具最重要的参数包括:
- 估算器: 这可以是任何 Scikit-learn ML 模型,例如决策树、随机森林、支持向量机等。
- 简历: int,定义交叉验证的折叠数。
- 得分: 细绳, 包含模型的评分方法。 对于分类, 是优选的。
用法
Elbow 图用于选择 K-Means 聚类中的最佳聚类数。 该模型最适合折线图中弯头出现的点。 肘部是图表上的拐点。
黄砖实现
使用传统方法创建 Elbow 图既复杂又耗时。 相反,我们可以使用 Yellowbrick 的 KElbowVisualizer。
为了在 Yellowbirck 中绘制学习曲线,我们将使用 鸢尾花 数据集(见 引 最后)。
下面的代码解释了我们如何利用 Yellowbrick 的 KElbowVisualizer 来使用 鸢尾花 数据集。
肘 发生在 k=4(用虚线标注)。 该图表明该模型的最佳聚类数为 4。换句话说,该模型适合 4 个聚类。
KElbowVisualizer 最重要的参数包括:
- 估算器: K-Means 模型实例
- k: 整数或元组。 如果是整数,它将计算 (2, k) 范围内的集群的分数。 如果是元组,它将计算给定范围内集群的分数,例如 (3, 11)。
用法
轮廓图用于选择 K-Means 聚类中的最佳聚类数,也用于检测聚类不平衡。 与 Elbow 图相比,该图提供了非常准确的结果。
黄砖实现
使用传统方法创建剪影图既复杂又耗时。 相反,我们可以使用 Yellowbrick 的 SilhouetteVisualizer。
要在 Yellowbirck 中创建剪影图,我们将使用以下方法构建 K-Means 聚类模型 鸢尾花 数据集(见 引 最后)。
以下代码块解释了我们如何利用 Yellowbrick 的 SilhouetteVisualizer 来创建剪影图 鸢尾花 具有不同 k(簇数)值的数据集。
k = 2
通过改变 KMeans() 类中的簇数,我们可以在不同时间执行上述代码,以在 k=3、k=4 和 k=5 时创建剪影图。
k = 3
k = 4
k = 5
剪影图每个簇包含一个刀形。 每个刀形都是由代表集群中所有数据点的条形图创建的。 因此,刀形的宽度代表集群中所有实例的数量。 条形长度表示每个实例的剪影系数。 虚线表示剪影得分——来源: 动手实践 K-Means 聚类 (我写的)。
刀形宽度大致相等的图告诉我们集群是平衡的,并且每个集群中的实例数量大致相同——这是 K-Means 聚类中最重要的假设之一。
当刀形条形延伸虚线时,聚类被很好地分离——K-Means 聚类中的另一个重要假设。
当 k=3 时,集群是均衡且分离良好的。 因此,我们示例中的最佳簇数为 3。
SilhouetteVisualizer 最重要的参数包括:
- 估算器: K-Means 模型实例
- 颜色: 字符串,用于每种刀形的颜色集合。 'yellowbrick' 或 Matplotlib 颜色映射字符串之一,例如 'Accent'、'Set1' 等。
用法
类不平衡图检测分类数据集中目标列中类的不平衡。
当一个类的实例明显多于另一个类时,就会发生类不平衡。 例如,与垃圾邮件检测相关的数据集有 9900 个“非垃圾邮件”类别的实例,只有 100 个“垃圾邮件”类别的实例。 该模型将无法捕获少数类( 垃圾 类别)。 因此,当发生类别不平衡时,该模型将无法准确预测少数类别——来源: 幕后秘密发生的 20 大机器学习和深度学习错误 (我写的)。
黄砖实现
使用传统方法创建类不平衡图既复杂又耗时。 相反,我们可以使用 Yellowbrick 的 ClassBalance 可视化工具。
要在 Yellowbirck 中绘制类不平衡图,我们将使用 乳腺癌 数据集(分类数据集,见 引 最后)。
下面的代码解释了我们如何利用 Yellowbrick 的 ClassBalance 可视化工具来创建一个类不平衡图 乳腺癌 数据集。
实例中有 200 多个 恶性 类和超过 350 个实例 良性 班级。 因此,尽管实例在两个类之间的分布不均,但我们在这里看不到太多的类不平衡。
ClassBalance 可视化工具最重要的参数包括:
- 标签: 列表,目标列中唯一类的名称。
用法
线性回归中的残差图用于通过分析回归模型中误差的方差来确定残差(观察值-预测值)是否不相关(独立)。
残差图是通过根据预测绘制残差来创建的。 如果预测值和残差之间存在任何类型的模式,则表明拟合回归模型并不完美。 如果点随机分布在 x 轴周围,则回归模型与数据拟合良好。
黄砖实现
使用传统方法创建残差图既复杂又耗时。 相反,我们可以使用 Yellowbrick 的 ResidualsPlot 可视化工具。
要在 Yellowbirck 中绘制残差图,我们将使用 广告 (广告.csv,请参阅 引 最后)数据集。
下面的代码解释了我们如何利用 Yellowbrick 的 ResidualsPlot 可视化工具来创建残差图 广告 数据集。
我们可以清楚地看到残差图中预测和残差之间的某种非线性模式。 拟合回归模型并不完美,但已经足够好了。
ResidualsPlot 可视化工具最重要的参数包括:
- 估算器: 这可以是任何 Scikit-learn 回归器。
- 历史: 布尔值,默认
True
. 是否绘制残差直方图,用于检查另一个假设——残差近似正态分布,均值为 0,标准差固定。
用法
线性回归中的预测误差图是一种用于评估回归模型的图形方法。
预测误差图是通过根据实际目标值绘制预测来创建的。
如果模型做出非常准确的预测,则这些点应该位于 45 度线上。 否则,这些点将分散在该线周围。
黄砖实现
使用传统方法创建预测误差图既复杂又耗时。 相反,我们可以使用 Yellowbrick 的 PredictionError 可视化工具。
要在 Yellowbirck 中绘制预测误差图,我们将使用 广告 (广告.csv,请参阅 引 最后)数据集。
下面的代码解释了我们如何利用 Yellowbrick 的 PredictionError 可视化工具来创建残差图 广告 数据集。
这些点并不完全在 45 度线上,但模型足够好。
PredictionError 可视化工具最重要的参数包括:
- 估算器: 这可以是任何 Scikit-learn 回归器。
- 身份: 布尔值,默认
True
. 是否画45度线。
用法
库克距离衡量实例对线性回归的影响。 具有较大影响的实例被视为异常值。 具有大量异常值的数据集不适合不进行预处理的线性回归。 简单地说,Cook 的距离图用于检测数据集中的异常值。
黄砖实现
使用传统方法创建库克距离图既复杂又耗时。 相反,我们可以使用 Yellowbrick 的 CooksDistance 可视化工具。
要在 Yellowbirck 中绘制库克距离图,我们将使用 广告 (广告.csv,请参阅 引 最后)数据集。
下面的代码解释了我们如何利用 Yellowbrick 的 CooksDistance 可视化工具来使用 广告 数据集。
有一些观察结果扩展了阈值(红色水平)线。 他们是异常值。 因此,我们应该在建立任何回归模型之前准备好数据。
CooksDistance 可视化工具最重要的参数包括:
- 绘制阈值: 布尔值,默认
True
. 是否绘制阈值线。
用法
特征重要性图用于选择生成 ML 模型所需的最少重要特征。 由于并非所有特征对模型的贡献都相同,因此我们可以从模型中删除不太重要的特征。 这将降低模型的复杂性。 简单的模型易于训练和解释。
特征重要性图可视化每个特征的相对重要性。
黄砖实现
使用传统方法创建特征重要性图既复杂又耗时。 相反,我们可以使用 Yellowbrick 的 FeatureImportances 可视化工具。
要在 Yellowbirck 中绘制特征重要性图,我们将使用 乳腺癌 数据集(见 引 最后)包含 30 个特征。
下面的代码解释了我们如何利用 Yellowbrick 的 FeatureImportances 可视化工具来创建特征重要性图 乳腺癌 数据集。
并非数据集中的所有 30 个特征都对模型有很大贡献。 我们可以从数据集中删除带有小条的特征,并使用选定的特征重新拟合模型。
FeatureImportances 可视化工具最重要的参数包括:
- 估算器: 不限 Scikit-learn 估计器支持
feature_importances_
属性或coef_
属性。 - 相对的: 布尔值,默认
True
. 是否将相对重要性绘制为百分比。 如果False
,显示了特征重要性的原始数值分数。 - 绝对: 布尔值,默认
False
. 是否通过避免负号来仅考虑系数的大小。
- 主成分图: 主成分分析(), Usage — 在 2D 或 3D 散点图中可视化高维数据,可用于识别高维数据中的重要模式。
- 验证曲线: 验证曲线(), Usage - 绘制 a 的影响 单 训练集和验证集上的超参数。
- 学习曲线: 学习曲线(), 用法——检测 不合身, 过度拟合 和 正好 模型的条件,识别 s低收敛性, 摆动的, 震荡发散 和 适当收敛 寻找神经网络最佳学习率时的场景,显示我们的模型从添加更多训练数据中获益多少。
- 弯头图: KEbowVisualizer(), Usage — 选择 K-Means 聚类中的最佳聚类数。
- 轮廓图: 剪影可视化器(), Usage — 在 K-Means 聚类中选择最佳聚类数,检测 K-Means 聚类中的聚类不平衡。
- 类不平衡图: 类平衡(), Usage——检测分类数据集中目标列中类的不平衡。
- 残差图: 残差图(), Usage — 通过分析回归模型中误差的方差来确定残差(观察值-预测值)是否不相关(独立)。
- 预测误差图: 预测错误(), Usage — 一种用于评估回归模型的图形方法。
- 库克的距离图: 厨师距离(), Usage——根据实例的 Cook 距离检测数据集中的异常值。
- 特征重要性图: 特征重要性(), Usage——根据每个特征的相对重要性选择最少需要的重要特征来生成 ML 模型。
今天的帖子到此结束。
如果您有任何问题或反馈,请告诉我。
继续阅读(推荐)
- Yellowbrick 使用一行代码可视化特征的重要性
- 验证曲线解释——绘制单个超参数的影响
- 绘制学习曲线来分析神经网络的训练性能
- 动手实践 K-Means 聚类
支持我当作家
我希望您喜欢阅读这篇文章。如果您想支持我作为作家,请考虑 注册会员 获得对 Medium 的无限制访问。每月只需 5 美元,我将收到您的一部分会员费。
非常感谢您一直以来的支持!下一篇文章见。祝大家学习愉快!
乳腺癌数据集信息
- 引文: Dua, D. 和 Graff, C. (2019)。 UCI 机器学习存储库 [http://archive.ics.uci.edu/ml]。 加利福尼亚州欧文:加利福尼亚大学信息与计算机科学学院。
- Sumber: https://archive.ics.uci.edu/ml/datasets/breast+cancer+wisconsin+(diagnostic)
- 执照: 威廉·沃尔伯格博士 (普通外科
威斯康星大学), W. 尼克街 (计算机科学系。
威斯康星大学)和 奥尔维·L·曼加萨里安 (威斯康星大学计算机科学系)拥有该数据集的版权。 Nick Street 将此数据集捐赠给了公众 知识共享署名4.0国际许可 (CC BY 4.0的). 您可以详细了解不同的数据集许可类型 相关信息.
虹膜数据集信息
- 引文: Dua, D. 和 Graff, C. (2019)。 UCI 机器学习存储库 [http://archive.ics.uci.edu/ml]。 加利福尼亚州欧文:加利福尼亚大学信息与计算机科学学院。
- Sumber: https://archive.ics.uci.edu/ml/datasets/iris
- 执照: 费舍尔 拥有此数据集的版权。 Michael Marshall 将此数据集捐赠给了公众 知识共享公共领域专用许可 (CC0). 您可以详细了解不同的数据集许可类型 相关信息.
广告数据集信息
参考资料
10 年你应该知道的 2023 个令人惊叹的机器学习可视化从来源重新发布 https://towardsdatascience.com/10-amazing-machine-learning-visualizations-you-should-know-in-2023-528282940582?source=rss—-7f60cf5620c9— 4 通过 https://towardsdatascience.com/feed
–>