在 Power BI 中使用 PyCaret 进行机器学习
最后更新于
这有帮助吗?
最后更新于
这有帮助吗?
阅读本文后,你将学习如何在 Power BI 中实现以下功能
聚类分析 — 将具有相似特征的数据点分组。
**异常检测** — 识别数据中的罕见观测值/异常值。
**自然语言处理** — 通过 主题建模分析文本数据。
**关联规则挖掘** — 发现数据中有趣的关系。
**分类** — 预测二元(1 或 0)的分类标签。
**回归分析** — 预测连续值,如销售额、价格等
“PyCaret 正在通过为业务分析师、领域专家、公民数据科学家和经验丰富的数据科学家提供免费、开源、低代码的机器学习解决方案,从而普及机器学习和高级分析的应用。”
在 Power BI 中开始使用 PyCaret 的机器学习功能之前,我们需要创建一个虚拟环境并安装 pycaret。这是一个三步过程:
从开始菜单打开 **Anaconda Prompt** 并运行以下代码
在 Anaconda Prompt 中运行以下代码
安装可能需要 10 – 15 分钟。
创建的虚拟环境必须与 Power BI 关联。这可以通过 Power BI Desktop 的全局设置完成(文件 → 选项 → 全局 → Python 脚本)。Anaconda 环境默认安装在
C:\Users*用户名*\AppData\Local\Continuum\anaconda3\envs\myenv
聚类分析是一种机器学习技术,用于将具有相似特征的数据点分组。这些分组对于探索数据、识别模式和分析数据子集非常有用。聚类分析的一些常见商业用例如下:
✔ 为营销目的进行客户细分。
✔ 为促销和折扣分析客户购买行为。
✔ 在流行病爆发(如 COVID-19)中识别地理聚类。
为了训练聚类模型,我们将在 Power Query 编辑器中执行 Python 脚本(Power Query 编辑器 → 转换 → 运行 Python 脚本)。
将以下代码作为 Python 脚本运行
原始表将附加一个包含标签的新列 **“Cluster”**。
应用查询后(Power Query 编辑器 → 主页 → 关闭并应用),你可以在 Power BI 中如下可视化聚类结果
默认情况下,PyCaret 会训练一个包含 4 个簇的 K-均值聚类模型(即表中的所有数据点都被分为 4 组)。可以轻松更改默认值
要更改簇的数量,可以在 **get_clusters( )** 函数中使用参数 ***num_clusters***。
要更改模型类型,可以在 get_clusters( ) 函数中使用参数 ***model***。
请看以下训练包含 6 个簇的 K-模式模型的示例代码
PyCaret 中有 9 种开箱即用的聚类算法可用
💡 在本示例中,我们使用 **get_clusters( )** 函数在原始表中分配簇标签。每次刷新查询时,都会重新计算簇。另一种实现方法是使用 predict_model( ) 函数,使用在 Python 或 Power BI 中训练好的**预训练模型**来预测簇标签(请参阅下面的示例 5,了解如何在 Power BI 环境中训练机器学习模型)。
异常检测是一种机器学习技术,通过检查与大多数行显著不同的表格行来识别罕见项、事件或观测值。通常,异常项会转化为某种问题,例如银行欺诈、结构缺陷、医疗问题或错误。异常检测的一些常见商业用例如下:
✔ 使用财务数据进行欺诈检测(信用卡、保险等)。
✔ 入侵检测(系统安全、恶意软件)或监控网络流量的峰值和下降。
✔ 识别数据集中的多元异常值。
类似于聚类分析,我们将从 Power Query 编辑器(转换 → 运行 Python 脚本)运行 Python 脚本来训练异常检测模型。将以下代码作为 Python 脚本运行
原始表将附加两个新列。标签(1 = 异常值,0 = 正常值)和分数(得分高的数据点被归类为异常值)。
应用查询后,你可以在 Power BI 中如下可视化异常检测的结果
默认情况下,PyCaret 会训练一个 K-近邻异常检测器,其异常值比例为 5%(即表中总行数的 5% 将被标记为异常值)。可以轻松更改默认值
要更改比例值,可以在 **get_outliers( )** 函数中使用参数 ***fraction***。
要更改模型类型,可以在 get_outliers( ) 函数中使用参数 ***model***。
请看以下训练异常值比例为 0.1 的孤立森林模型的代码
PyCaret 中有超过 10 种开箱即用的异常检测算法可用
💡 在本示例中,我们使用 **get_outliers( )** 函数分配异常值标签和得分进行分析。每次刷新查询时,都会重新计算异常值。另一种实现方法是使用 predict_model( ) 函数,使用在 Python 或 Power BI 中训练好的预训练模型来预测异常值(请参阅下面的示例 5,了解如何在 Power BI 环境中训练机器学习模型)。
有几种技术用于分析文本数据,其中**主题建模**是一种流行的方法。主题模型是一种统计模型,用于发现文档集合中的抽象主题。主题建模是发现文本数据中隐藏语义结构的常用文本挖掘工具。
在 Power Query 编辑器中将以下代码作为 Python 脚本运行
‘en’ 是表 ‘kiva’ 中包含文本的列的名称。
代码执行后,原始表将附加包含主题权重和主导主题的新列。在 Power BI 中可视化主题模型输出的方法有很多。请看下面的示例
默认情况下,PyCaret 会训练一个包含 4 个主题的隐狄利克雷分配模型。可以轻松更改默认值
要更改主题数量,可以在 **get_topics( )** 函数中使用参数 ***num_topics***。
要更改模型类型,可以在 get_topics( ) 函数中使用参数 ***model***。
请看以下训练包含 10 个主题的非负矩阵分解模型的示例代码
PyCaret 提供以下开箱即用的主题建模算法
关联规则挖掘是一种**基于规则的机器学习**技术,用于发现数据库中变量之间的有趣关系。它旨在利用兴趣度度量识别强规则。关联规则挖掘的一些常见商业用例如下:
✔ 市场购物篮分析,了解经常一起购买的商品。
✔ 医疗诊断,协助医生根据因素和症状确定疾病发生的概率。
现在应该清楚了,所有 PyCaret 函数都在 Power Query 编辑器中作为 Python 脚本执行(转换 → 运行 Python 脚本)。运行以下代码使用 Apriori 算法训练关联规则模型
‘InvoiceNo’ 是包含交易 ID 的列,‘Description’ 包含感兴趣的变量,即产品名称。
分类是一种监督机器学习技术,用于预测分类类别标签(也称为二元变量)。分类的一些常见商业用例如下:
✔ 预测客户贷款/信用卡违约。
✔ 预测客户流失(客户是留下还是离开)
✔ 预测患者结果(患者是否有疾病)
目标: 表格 ‘employee’ 包含公司中 15,000 名在职员工的信息,如在公司工作的时间、平均月工作小时数、晋升历史、部门等。基于所有这些列(在机器学习术语中也称为特征),目标是预测员工是否会离开公司,这由列 **‘left’** 表示(1 表示是,0 表示否)。
与聚类、异常检测和自然语言处理等属于无监督机器学习范畴的示例不同,分类是一种**监督**技术,因此它分两部分实现:
第一步是在 Power Query 编辑器中创建一个表格 ‘employee’ 的副本,用于训练模型。
在新创建的复制表 ‘employee (model training)’ 中运行以下代码以训练分类模型
此脚本的输出将是一个保存到指定位置的 **pickle 文件**。该 pickle 文件包含整个数据转换管道以及训练好的模型对象。
PyCaret 中有 18 种开箱即用的分类算法可用
现在我们可以使用训练好的模型在原始的 **‘employee’** 表格上预测员工是否会离开公司(1 或 0)以及概率百分比。将以下代码作为 Python 脚本运行以生成预测
原始表将附加两个新列。‘Label’ 列表示预测结果,‘Score’ 列表示结果的概率。
在本示例中,我们仅为演示目的在用于训练模型的同一数据上进行了预测。在实际场景中,‘Left’ 列是实际结果,在预测时是未知的。
在本教程中,我们训练了一个极端梯度提升(‘xgboost’)模型并用它生成预测。这样做只是为了简化。实际上,你可以使用 PyCaret 来预测任何类型的模型或模型链。
**回归分析**是一种监督机器学习技术,用于在给定过去数据及其相应的过去结果的情况下,以最佳方式预测连续结果。与用于预测二元结果(例如是或否 (1 或 0))的分类分析不同,回归分析用于预测连续值,例如销售额、价格、数量等。
目标: 表格 ‘boston’ 包含波士顿 506 套房屋的信息,例如平均房间数、房产税率、人口等。基于这些列(在机器学习术语中也称为特征),目标是预测房屋的中位数价值,由列 ‘medv’ 表示。
第一步是在 Power Query 编辑器中创建一个表格 ‘boston’ 的副本,用于训练模型。
在新的复制表中将以下代码作为 Python 脚本运行
此脚本的输出将是一个保存到指定位置的 **pickle 文件**。该 pickle 文件包含整个数据转换管道以及训练好的模型对象。
PyCaret 中有超过 20 种开箱即用的回归算法可用
现在我们可以使用训练好的模型来预测房屋的中位数价值。在原始表格 *‘boston’* 中将以下代码作为 Python 脚本运行
原始表将附加一个包含预测结果的新列 ‘Label’。
在本示例中,我们仅为演示目的在用于训练模型的同一数据上进行了预测。在实际场景中,‘medv’ 列是实际结果,在预测时是未知的。
如果你想了解更多信息,请保持关注。
初学者级别的 Python Notebooks
截至 1.0.0 首次发布版本,PyCaret 提供以下可用的模块。点击下方链接查看文档和 Python 中的实际示例。
上周我们宣布了, 一个开源的 Python 机器学习库,用于在低代码环境中训练和部署机器学习模型。在我们的中,我们演示了如何在 Jupyter Notebook 中使用 PyCaret 训练和部署 Python 机器学习模型。
在这篇文章中,我们将提供一个逐步教程,介绍如何将 PyCaret 集成到中,从而允许分析师和数据科学家无需额外的许可或软件成本,即可为他们的仪表板和报告添加机器学习层。PyCaret 是一个开源且免费使用的 Python 库,提供了专门为在 Power BI 中工作而构建的各种功能。
Power BI 是一种商业分析解决方案,可让你可视化数据并在组织内共享洞察,或将其嵌入到你的应用或网站中。在本教程中,我们将使用来进行机器学习,通过将 PyCaret 库导入 Power BI。
如果你以前使用过 Python,你的计算机上很可能已经安装了 Anaconda Distribution。如果没有,下载 Anaconda Distribution,需要 Python 3.7 或更高版本。
步骤 1 — 创建一个 anaconda 环境
步骤 2 — 安装 PyCaret
步骤 3 — 在 Power BI 中设置 Python 目录
在本教程中,我们将使用 PyCaret ‘jewellery.csv’ 文件,该文件可在其上获取。你可以使用 Web 连接器加载数据。(Power BI Desktop → 获取数据 → 从 Web)。
csv 文件链接
训练聚类模型所需的所有预处理任务,例如(如果表格有任何缺失或 *null* 值),或者,或者,在训练聚类模型之前都会自动执行。了解有关 PyCaret 预处理功能的更多信息。
💡 如果你想学习如何在 Jupyter Notebook 中使用 Python 训练聚类模型,请参阅我们的。(无需编码背景)。
在本教程中,我们将使用 PyCaret ‘anomaly.csv’ 文件,该文件可在其上获取。你可以使用 Web 连接器加载数据。(Power BI Desktop → 获取数据 → 从 Web)。
csv 文件链接
训练异常检测模型所需的所有预处理任务,例如(如果表格有任何缺失或 *null* 值),或者,或者,在训练异常检测模型之前都会自动执行。了解有关 PyCaret 预处理功能的更多信息。
💡 如果你想学习如何在 Jupyter Notebook 中使用 Python 训练异常检测器,请参阅我们的。(无需编码背景)。
在本教程中,我们将使用 PyCaret ‘kiva.csv’ 文件,该文件可在其上获取。你可以使用 Web 连接器加载数据。(Power BI Desktop → 获取数据 → 从 Web)。
csv 文件链接
在本教程中,我们将使用 PyCaret ‘france.csv’ 文件,该文件可在其上获取。你可以使用 Web 连接器加载数据。(Power BI Desktop → 获取数据 → 从 Web)。
csv 文件链接
它返回一个包含前项和后项以及相关指标(如支持度、置信度、提升度等)的表格。了解 PyCaret 中关联规则挖掘的更多信息。
在本教程中,我们将使用 PyCaret **‘employee.csv’** 文件,该文件可在其上获取。你可以使用 Web 连接器加载数据。(Power BI Desktop → 获取数据 → 从 Web)。
csv 文件链接
💡 另一种方法是在 Jupyter Notebook 中训练模型而不是在 Power BI 中。在这种情况下,Power BI 将仅用于在前端使用 Jupyter Notebook 中训练好的预训练模型生成预测,该模型将作为 pickle 文件导入 Power BI(请遵循下面的第 2 部分)。要了解如何在 Python 中使用 PyCaret,.
💡 如果你想学习如何在 Jupyter Notebook 中使用 Python 训练分类模型,请参阅我们的。(无需编码背景)。
PyCaret 的 predict_model( ) 函数可以与使用 PyCaret 创建的 pickle 文件无缝协作,因为它包含整个转换管道以及训练好的模型对象。了解有关 **predict_model** 函数的更多信息。
💡 训练分类模型所需的所有预处理任务,例如(如果表格有任何缺失或 *null* 值),或者,或者,在训练模型之前都会自动执行。了解有关 PyCaret 预处理功能的更多信息。
在本教程中,我们将使用 pycaret ‘boston.csv’ 文件,该文件可在其上获取。你可以使用 Web 连接器加载数据。(Power BI Desktop → 获取数据 → 从 Web)。
csv 文件链接
💡 训练回归模型所需的所有预处理任务,例如(如果表格有任何缺失或 *null* 值),或者,或者,在训练模型之前都会自动执行。了解有关 PyCaret 预处理功能的更多信息。
在在 Power BI 中使用 PyCaret 进行机器学习系列的下一篇教程中,我们将更深入地探讨 PyCaret 中的高级预处理功能。我们还将了解如何在 Power BI 中生产化机器学习解决方案,并利用在 Power BI 前端的功能。
在我们的页面上关注我们,并订阅我们的频道。
我们正在积极改进 PyCaret。未来的开发管道包括一个新的时间序列预测模块、与 **TensorFlow** 的集成,以及 PyCaret 可伸缩性的重大改进。如果你想分享你的反馈并帮助我们进一步改进,你可以在网站上或在我们的或页面上留言。
请在我们的给我们 ⭐️,如果你喜欢 PyCaret。
在 Medium 上关注我