在 Tableau 中使用 PyCaret 进行机器学习
最后更新于
这有帮助吗?
最后更新于
这有帮助吗?
是一个最近发布的开源 Python 机器学习库,可以在**低代码**环境中训练和部署机器学习模型。要了解更多关于 PyCaret 的信息,请阅读这篇文章.
本文将演示 PyCaret 如何与 Tableau Desktop 和 Tableau Prep 集成,这为分析师和数据科学家在他们的仪表板、报告和可视化中添加一层机器学习开辟了新的途径。通过减少编码所需的时间以及购买额外软件的需求,现在可以在组织中分析师已经熟悉和可用的环境中进行快速原型开发。
在 PyCaret 中训练一个监督式机器学习模型并创建一个 ML pipeline
将训练好的 ML pipeline 加载到 Tableau Desktop 和 Tableau Prep 中
创建一个仪表板,传达模型的见解
了解如何使用 Tableau 将模型部署到生产环境
这里的示例将重点介绍如何设置一个基本的直销倾向模型,该模型使用分类算法来预测哪些客户在收到短信或电子邮件优惠后最有可能发起访问。
然后将创建一个仪表板,该仪表板可以利用训练好的模型预测新营销活动可能有多成功,这对于设计促销计划的营销人员非常有价值。
通过使用 PyCaret 和 Tableau,企业可以快速建立报告产品,利用现有软件并以最少的前期开发时间持续生成预测性视图。
所需的软件
1 — Tableau Desktop
2 — Tableau Prep
3 — Python 3.7 或更高版本
4 — PyCaret Python 库
5 — TabPy Python 库
TabPy 是 Tableau 支持的库,用于运行 Python 脚本。
TabPy (Tableau Python 服务器) 是一个分析扩展实现,通过允许用户通过 Tableau 的表计算执行 Python 脚本和已保存的函数来扩展 Tableau 的功能。
要在 Anaconda prompt 或终端中安装 TabPy,请使用以下代码。
安装后,使用以下代码以默认设置启动本地服务器。
要将 Tableau 连接到 TabPy 服务器,请转到 帮助 > 设置和性能 > 管理分析扩展连接。选择 TabPy 并输入 localhost,端口 9004(默认),然后测试连接。
现在可以通过 Tableau 中的计算字段运行 Python 脚本,这些字段输出为表计算。
虽然可以在 Tableau 内部执行模型训练过程,但这通常不是首选方法,因为每次数据刷新或用户与视图交互时,脚本都会重新运行。这带来了问题,因为
当模型用新数据重新训练时,预测可能会意外改变。
持续重新运行脚本会影响仪表板的性能。
更合适的方法是在 Tableau 中使用预训练模型来对新数据生成预测。本例将使用 Jupyter Notebook 演示如何使用 PyCaret 使此过程变得简单直观。
在 Jupyter Notebook 中运行以下代码将训练一个朴素贝叶斯分类模型,并创建一个保存为 pickle 文件的 ML pipeline。
这些未见过的数据将用于模拟尚未收到优惠的新客户列表。当仪表板部署到生产环境时,它将连接到包含新客户信息的数据库。
请注意,在 setup 阶段,PyCaret 会执行自动预处理,在本例中,通过独热编码将特征数量从 10 个扩展到 39 个。
未见过的数据现在将被传递给训练好的模型,并在 Tableau Desktop 中进行标记。
操作步骤
打开 Tableau 并连接到上面代码中创建的文本文件 new_customer.csv。这仅作为示例,但理想情况下,新的或未标记的客户数据应存储在数据库中。
在新工作表中,选择 分析 > 创建计算字段 或直接在数据窗格中右键单击。输入以下代码
SCRIPT_INT(" import pandas as pd import pycaret.classification
nb = pycaret.classification.load_model('C:/Users/owner/Desktop/nb_direct')
X_pred = pd.DataFrame({'recency':_arg1, 'history_segment':_arg2, 'history':_arg3, 'mens':_arg4, 'womens':_arg5,'zip_code':_arg6, 'newbie':_arg7, 'channel':_arg8, 'segment':_arg9, 'DM_category':_arg10})
pred = pycaret.classification.predict_model(nb, X_pred) return pred['Label'].tolist()
", SUM([recency]), ATTR([history_segment]), SUM([history]), SUM([mens]), SUM([womens]), ATTR([zip_code]), SUM([newbie]), ATTR([channel]), ATTR([segment]), SUM([DM_category]) )
脚本函数指定了计算将返回的数据类型。在本例中,它是访问的二元预测标签。
PyCaret 的 load_model() 函数加载之前保存的模型和转换 pipeline,该 pipeline 被保存为一个 pickle 文件。
X_pred 是一个数据框,它将通过 _arg1, _arg2, _arg3… 的符号将连接到 Tableau 的数据映射为输入。字段列在脚本的末尾。
predict_model() 函数接收训练好的模型,并对新的数据输入进行预测。注意,新数据会通过在 PyCaret setup 阶段创建的转换 pipeline(编码)进行处理。
然后将标签作为列表返回,可以在 Tableau 中查看。
通过将 ID 和 Label 列拖到视图中,可以看到模型的预测结果。
重要的是要理解,输出是一个表计算,它有一些限制
脚本只有在被拉入视图时才会运行。
除非两者都在视图中,否则它不能作为进一步计算的基础。
Python 生成的数据不能附加到 Tableau 提取中。
每次视图更改时脚本都会运行,这可能导致长时间等待。
这些缺点非常显著,因为当每个记录都必须包含在视图中时,仪表板选项变得有限,并且在本例中,脚本运行 3200 条记录大约需要 4 分钟。
可行的应用包括生成可以导出或生成类似下面这样的汇总视图的得分列表。
从中获得的一个见解例子可能是,消费更高的客户最有可能访问,这在业务上是合理的,但也可能是不必要折扣的迹象。
克服直接在 Tableau Desktop 中运行脚本限制的一个很好的替代方法是使用 Tableau Prep。可以连接新数据,然后将其传递给模型,这次的不同之处在于预测标签被附加到输出中。连接到 Tableau 后,新列可以正常使用,而不是作为表计算。
操作步骤
打开 Tableau Prep 并连接到上面代码中创建的文本文件 new_customer.csv。
在流程窗格中选择文件旁边的“+”按钮,并添加脚本选项。与 Tableau Desktop 一样,使用 localhost 和 9004 连接到应该仍在后台运行的 TabPy 服务器。
创建一个函数来加载包含已保存模型和转换 pipeline 的 pickle 文件。加载到 prep 中的数据会自动保存在 df 对象中,并传递给模型。
PyCaret 输出将返回原始数据集以及两个新附加的列:Label(预测)和 Score(预测概率)。输出 schema 确保列和数据类型被正确读取到 prep 中。
然后必须将函数名称输入到 prep 中。
选择脚本图标旁边的“+”号并选择输出。可以发布为 .tde 或 .hyper 文件到 Tableau Server,这在生产环境中是首选方法,但对于本例,将把 .csv 文件发送到桌面。
在服务器环境中,可以安排流程运行时间,并在数据到达实际的 Tableau 仪表板之前自动完成评分过程。
现在可以将新标记的数据连接到 Tableau Desktop,而不会受到表计算限制和速度减慢的影响。
可以创建聚合和任何其他所需的计算,以设计一个显示各种预测指标的汇总仪表板
本文演示了 PyCaret 如何与 Tableau Desktop 和 Tableau Prep 集成,从而快速将一层机器学习添加到现有工作流中。
通过使用组织熟悉的工具和 PyCaret 库,可以在几分钟内建立完整的 ML pipeline,从而使预测分析原型快速启动。
是一个可视分析工具,用于连接数据、构建交互式仪表板并在组织内共享见解。
提供了一个可视化界面,通过设置流程和计划来合并、清理和整形数据。
Anaconda 是一个免费、开源的 Python 编程语言发行版,用于数据科学。如果你之前没有使用过,可以在这里下载.
要安装库,请在 Jupyter notebook 或 Anaconda prompt 中使用以下代码。
这可能需要最多 15 分钟。如果遇到任何问题,请参阅项目页面以了解已知问题。
从页面
请参考 TabPy页面了解自定义服务器选项。本文不涵盖在外部服务器和/或云上运行 TabPy 以及配置 Tableau Server,但请查看以获取更多信息。
将使用的数据集包含通过短信和电子邮件发送给客户的各种营销优惠信息。它包含 64000 条记录,组织为一个 ID 列、10 个与客户或发送的消息相关的特征以及一个指示是否发生访问的二元目标。数据可以在这里下载.
请注意,模型的 setup 和保存仅用 4 行代码即可完成。完整的 notebook 可以在这里下载.
这仅触及了 PyCaret 内置功能的皮毛,因此强烈建议查阅分类和在 PyCaret 网站上。本文不涵盖所选模型的具体细节。
接下来,需要创建以下 python 脚本并使用浏览选项连接到 prep。它可以在这里下载.
请注意 label 和 score 列如何附加到原始数据集。选择“run flow”来生成输出。流程文件可以在这里下载.
一旦数据和 ML pipeline 建立,营销人员和高管将能够快速跟踪即将开展的营销活动潜在的表现,只需最少的干预。包含示例仪表板和先前脚本的 Tableau 文件可以在这里下载.