在 Power BI 中使用 PyCaret 进行聚类分析
如何在 Power BI 中使用 PyCaret 实现聚类分析
作者:Moez Ali
在我们的上一篇文章中,我们演示了如何通过将 PyCaret 集成到 Power BI 中来构建异常检测器,从而使分析师和数据科学家能够在其报告和仪表板中添加一层机器学习,而无需额外的许可成本。
在本文中,我们将看到如何使用 PyCaret 在 Power BI 中实现聚类分析。如果您之前没有听说过 PyCaret,请阅读这 篇公告以了解更多信息。
本教程的学习目标
- 什么是聚类?聚类的类型。
- 在 Power BI 中训练和实现无监督的聚类模型。
- 分析结果并在仪表板中可视化信息。
- 如何在 Power BI 生产环境中部署聚类模型?
开始之前
如果您之前使用过 Python,那么您可能已经在计算机上安装了 Anaconda 发行版。如果没有,请点击这里下载带有 Python 3.7 或更高版本的 Anaconda 发行版。
环境设置
在我们开始在 Power BI 中使用 PyCaret 的机器学习功能之前, 我们必须创建一个虚拟环境并安装 pycaret。这是一个三步过程:
✅ 步骤 1 — 创建一个 Anaconda 环境
从开始菜单中打开 Anaconda Prompt 并执行以下代码:
conda create --name myenv python=3.7
✅ 步骤 2 — 安装 PyCaret
在 Anaconda Prompt 中执行以下代码:
pip install pycaret
安装可能需要 15-20 分钟。如果安装过程中遇到问题,请查看我们的GitHub页面以获取已知问题和解决方案。
✅步骤 3 — 在 Power BI 中设置 Python 目录
创建的虚拟环境必须与 Power BI 相关联。这可以通过 Power BI Desktop 中的全局设置完成(文件 → 选项 → 全局 → Python 脚本)。Anaconda 环境默认安装在:
C:\Users*username*\AppData\Local\Continuum\anaconda3\envs\myenv
什么是聚类?
聚类是一种将具有相似特征的数据点分组的技术。这些分组对于探索数据、识别模式和分析数据子集非常有用。将数据组织成簇有助于识别数据中的潜在结构,并在许多行业中找到应用。一些常见的聚类业务用例包括:
✔ 用于营销目的的客户细分。
✔ 用于促销和折扣的客户购买行为分析。
✔ 在流行病爆发中识别地理簇,如 COVID-19。
聚类的类型
鉴于聚类任务的主观性质,有各种算法适用于不同类型的问题。每个算法都有自己的规则以及计算簇的数学原理。
本教程是关于在 Power BI 中使用名为 PyCaret 的 Python 库实现聚类分析。本教程不涉及特定算法细节和这些算法背后的数学原理。
在本教程中,我们将使用 K-Means 算法,这是最简单和最流行的无监督机器学习算法之一。如果您想了解更多关于 K-Means 的信息,可以阅读这篇论文。
设定业务背景
在本教程中,我们将使用世界卫生组织的全球卫生支出数据库中的当前卫生支出数据集。该数据集包含从 2000 年到 2017 年,200 多个国家的卫生支出占国民 GDP 的百分比。
我们的目标是通过使用 K-Means 聚类算法在这些数据中找到模式和群组。
👉 让我们开始吧
现在您已经设置好了Anaconda环境,安装了PyCaret,了解了聚类分析的基础知识,并且对本教程的业务背景有了了解,让我们开始吧。
1. 获取数据
第一步是将数据集导入到Power BI Desktop中。您可以使用Web连接器加载数据(Power BI Desktop → 获取数据 → 从Web)。
csv文件链接:https://github.com/pycaret/powerbi-clustering/blob/master/clustering.csv
2. 模型训练
要在Power BI中训练一个聚类模型,我们需要在Power Query Editor中执行一个Python脚本(Power Query Editor → 转换 → 运行Python脚本)。运行以下代码作为Python脚本:
from pycaret.clustering import *
dataset = get_clusters(dataset, num_clusters=5, ignore_features=['Country'])
我们使用ignore_features参数在数据集中忽略了‘Country’列。有很多原因可能导致您不想使用某些列来训练机器学习算法。
PyCaret允许您隐藏而不是删除数据集中不需要的列,因为您可能会在以后的分析中需要这些列。例如,在这种情况下,我们不想使用‘Country’来训练算法,因此我们将其传递给ignore_features。
PyCaret提供了超过8种现成的聚类算法。
默认情况下,PyCaret使用4个簇训练K-Means聚类模型。默认值可以轻松更改:
- 要更改模型类型,请在get_clusters()中使用model参数。
- 要更改簇数,请使用num_clusters参数。
查看使用6个簇的K-Modes聚类的示例代码。
from pycaret.clustering import *
dataset = get_clusters(dataset, model='kmodes', num_clusters=6, ignore_features=['Country'])
输出:
附加了一个包含聚类标签的新列到原始数据集。然后将所有年份列解枢以规范化数据,以便在Power BI中进行可视化。
这是Power BI中最终输出的样子。
3. 仪表板
一旦您在Power BI中有了聚类标签,这里是一个示例,展示如何在仪表板中可视化以生成洞察:
您可以从我们的GitHub下载PBIX文件和数据集。