在 Power BI 中使用 PyCaret 进行机器学习
在 Power BI 中使用 PyCaret 进行机器学习
一份逐步教程,让您能在几分钟内在 Power BI 中实现机器学习
作者:Moez Ali
PyCaret 1.0.0
上周,我们宣布了 PyCaret,这是一个在 Python 中的开源机器学习库,可以在一个**低代码**环境中训练和部署机器学习模型。在我们的上一篇文章 中,我们演示了如何在 Jupyter Notebook 中使用 PyCaret 来训练和部署 Python 中的机器学习模型。
在本文中,我们将介绍一个逐步教程,展示如何将 PyCaret 集成到 Power BI 中,从而使分析师和数据科学家能够在他们的仪表板和报告中添加一层机器学习,而无需额外的许可证或软件成本。PyCaret 是一个开源且**免费使用**的 Python 库,具有广泛的功能,专门设计用于在 Power BI 中运行。
通过本文,您将学会如何在 Power BI 中实现以下功能:
- 聚类 — 将具有相似特征的数据点分组。
- **异常检测** — 识别数据中的罕见观察值 / 异常值。
- **自然语言处理** — 通过主题建模分析文本数据。
- **关联规则挖掘** — 在数据中找到有趣的关系。
- **分类** — 预测二元分类标签。
- **回归** — 预测销售额、价格等连续值
“PyCaret 通过为业务分析师、领域专家、公民数据科学家和经验丰富的数据科学家提供免费、开源和低代码的机器学习解决方案,实现了机器学习和高级分析的民主化”。
Microsoft Power BI
Power BI 是一款商业分析解决方案,让您可以可视化数据并在组织内共享见解,或将其嵌入到您的应用程序或网站中。在本教程中,我们将通过将 PyCaret 库导入 Power BI,使用 Power BI Desktop 进行机器学习。
开始之前
如果您以前使用过 Python,很可能已经在计算机上安装了 Anaconda 发行版。如果没有,请点击这里下载带有 Python 3.7 或更高版本的 Anaconda 发行版。
设置环境
在 Power BI 中使用 PyCaret 的机器学习功能之前,我们必须创建一个虚拟环境并安装 pycaret。这是一个三步过程:
✅ 第一步 — 创建一个 Anaconda 环境
从开始菜单打开** Anaconda Prompt **,运行以下代码:
conda create --name myenv python=3.6
✅ 第二步 — 安装 PyCaret
在 Anaconda Prompt 中运行以下代码:
conda activate myenv
pip install pycaret
安装可能需要 10 – 15 分钟。
✅第三步 — 在 Power BI 中设置 Python 目录
创建的虚拟环境必须与 Power BI 关联。这可以通过 Power BI Desktop 中的全局设置完成(文件 → 选项 → 全局 → Python 脚本)。Anaconda 环境默认安装在:
C:\Users*用户名*\AppData\Local\Continuum\anaconda3\envs\myenv
📘 示例 1 — 在 Power BI 中进行聚类
聚类是一种机器学习技术,用于将具有相似特征的数据点分组。这些分组对于探索数据、识别模式和分析数据子集非常有用。一些常见的聚类业务用例包括:
✔ 用于营销目的的客户细分。
✔ 用于促销和折扣的客户购买行为分析。
✔ 在流行病爆发中识别地理集群,如 COVID-19。
在本教程中,我们将使用 PyCaret 的 github 仓库 上提供的 ‘jewellery.csv’ 文件。您可以使用 Web 连接器加载数据。(Power BI Desktop → 获取数据 → 从 Web)。
**csv 文件链接: **https://raw.githubusercontent.com/pycaret/pycaret/master/datasets/jewellery.csv
K-Means 聚类
为了训练一个聚类模型,我们将在 Power Query Editor 中执行 Python 脚本(Power Query Editor → 转换 → 运行 Python 脚本)。
运行以下代码作为 Python 脚本:
from pycaret.clustering import *
dataset = get_clusters(data = dataset)
输出:
原始表格中附加了一个名为“Cluster”的新列,其中包含标签。
一旦应用查询(Power Query Editor → 主页 → 关闭并应用),您可以在 Power BI 中可视化聚类结果:
默认情况下,PyCaret 使用 4 个聚类(即表中的所有数据点被分为 4 组)训练 K-Means 聚类模型。可以轻松更改默认值:
- 要更改聚类数目,可以在 get_clusters( ) 函数中使用 num_clusters 参数。
- 要更改模型类型,请在 get_clusters( ) 中使用 model 参数。
以下是使用 6 个聚类训练 K-Modes 模型的示例代码:
from pycaret.clustering import *
dataset = get_clusters(dataset, model = 'kmodes', num_clusters = 6)
PyCaret 提供了 9 种现成的聚类算法:
在训练聚类模型之前,PyCaret 会自动执行所有必要的预处理任务,例如缺失值插补(如果表中有任何缺失或空值)、归一化或独热编码。点击此处了解有关 PyCaret 预处理功能的更多信息。
💡 在此示例中,我们使用 get_clusters( ) 函数将聚类标签分配给原始表格。每次刷新查询时,都会重新计算聚类。实现这一目标的另一种方法是使用 predict_model( ) 函数,使用 Python 或 Power BI 中的预训练模型来预测聚类标签(请参见下面的示例 5,了解如何在 Power BI 环境中训练机器学习模型)。
💡 如果您想学习如何在 Jupyter Notebook 中使用 Python 训练聚类模型,请参阅我们的聚类 101 入门教程(无需编程背景)。
📘 示例 2 — 在 Power BI 中进行异常检测
异常检测是一种机器学习技术,用于通过检查与大多数行显著不同的表格行来识别罕见的项目、事件或观察结果。通常,异常项会导致某种问题,例如银行欺诈、结构缺陷、医疗问题或错误。异常检测的一些常见业务用例包括:
✔ 使用财务数据进行欺诈检测(信用卡、保险等)。
✔ 使用系统安全、恶意软件进行入侵检测或监测网络流量的波动。
✔ 在数据集中识别多变量离群值。
在本教程中,我们将使用 PyCaret 的 github 仓库 上可用的 'anomaly.csv' 文件。您可以使用 Web 连接器加载数据(Power BI Desktop → 获取数据 → 从 Web)。
csv 文件链接:https://raw.githubusercontent.com/pycaret/pycaret/master/datasets/anomaly.csv
K-最近邻异常检测器
与聚类类似,我们将在 Power Query Editor 中运行 Python 脚本(转换 → 运行 Python 脚本)来训练异常检测模型。运行以下代码作为 Python 脚本:
from pycaret.anomaly import *
dataset = get_outliers(data = dataset)
输出:
在原始表格中添加了两列。Label(1表示异常值,0表示正常值)和Score(具有高分数的数据点被归类为异常值)。
应用查询后,您可以在Power BI中可视化异常检测的结果:
默认情况下,PyCaret使用5%的比例训练K最近邻异常检测器(即表格中总行数的5%将被标记为异常值)。可以轻松更改默认值:
- 要更改比例值,可以在get_outliers()函数中使用fraction参数。
- 要更改模型类型,可以在get_outliers()函数中使用model参数。
以下是使用0.1比例训练孤立森林模型的代码示例:
from pycaret.anomaly import *
dataset = get_outliers(dataset, model = 'iforest', fraction = 0.1)
PyCaret中有10多种可供使用的异常检测算法:
在训练异常检测模型之前,PyCaret会自动执行所有必要的预处理任务,例如缺失值插补(如果表格中有任何缺失或null值)、归一化或独热编码。点击此处了解有关PyCaret预处理功能的更多信息。
💡 在此示例中,我们使用**get_outliers()函数为分析分配了异常值标签和分数。每次刷新查询时,都会重新计算异常值。实现此功能的另一种方法是使用predict_model()**函数使用预训练模型在Python或Power BI中预测异常值(请参见下面的示例5,了解如何在Power BI环境中训练机器学习模型)。
💡 如果您想学习如何使用Jupyter Notebook在Python中训练异常检测器,请参阅我们的异常检测101初学者教程(无需编程背景)。
📘 示例3 — 自然语言处理
在分析文本数据时,有多种技术可供选择,其中主题建模是一种常用的技术。主题建模是一种用于发现文档集合中抽象主题的统计模型。主题建模是文本挖掘中常用的工具,用于发现文本数据中的隐藏语义结构。
在本教程中,我们将使用PyCaret的github存储库上提供的**‘kiva.csv’**文件。您可以使用Web连接器加载数据(Power BI Desktop → 获取数据 → 从Web)。
csv文件链接 :https://raw.githubusercontent.com/pycaret/pycaret/master/datasets/kiva.csv
潜在狄利克雷分配
在Power Query Editor中将以下代码作为Python脚本运行:
from pycaret.nlp import *
dataset = get_topics(data = dataset, text = 'en')
**‘en’是包含表格‘kiva’**中文本的列名。
输出:
代码执行后,原始表格将附加具有主题权重和主导主题的新列。有许多方法可以在Power BI中可视化主题模型的输出。以下是一个示例:
默认情况下,PyCaret使用4个主题训练潜在狄利克雷分配模型。可以轻松更改默认值:
- 要更改主题数量,可以在get_topics()函数中使用num_topics参数。
- 要更改模型类型,可以在get_topics()函数中使用model参数。
以下是使用10个主题训练非负矩阵分解模型的示例代码:
from pycaret.nlp import *
dataset = get_topics(dataset, 'en', model = 'nmf', num_topics = 10)
PyCaret提供了以下可供使用的主题建模算法: