机器学习是目前炙手可热的一门交叉学科,致力于研究通过计算的手段,利用经验来改善系统自身的性能,目前已经有相当成熟的应用场景。Tableau是致力于帮助人们查看并理解数据的一款可视化分析软件。本文使用Iris鸢尾花数据集,探讨了如何使用Python语言,将机器学习算法模型集成到Tableau的可视化分析报表中,并给出总结意见。
Tabpy环境搭建
在Tableau公司的Github主页下,有一个名为Tabpy的项目,提供了Tableau和Python集成的套件:Tabpy framework,该套件包含两个组件:
1. Tabpy Server, 一个远程服务器,用于运行从tableau传递过来的python代码;
2. Tabpy client, 用于将用户建立的数据分析或数据挖掘的模型发布到Tabpy Server, 增强代码可重用性。
Tabpy Server
官方提供了一个整体打包的方案,在github页面下载整个项目到本地,点击setup.bat或setup.sh文件就可以自动下载Anaconda环境,创建一个名为Tableau-Python-Server的环境,并且在这个环境中安装好Tabpy及相关的各种库。
如果你是老司机喜欢用手动档,那我们一起来看一下手动安装的步骤(以Windows平台为例):
1. 本机下载安装Anaconda,把Anaconda的Python环境加入到环境变量;
2. 运行以下命令在Anaconda上建立一个名为Tableau-Python-Server的环境:
conda create --name Tableau-Python-Server python=2.7 anaconda
3. 运行以下命令切换到新创建的环境:
activate Tableau-Python-Server
然后运行命令安装Tabpy
pip install tabpy-server
如果命令运行一切正常,你会在该目录Users\yourname\anaconda\envs\Tableau-Python-Server\Lib\site-packages下看到一个名为tabpy_server的文件夹,里面包含了一个用于启动Tabpy server的startup.bat文件,把它创建一个快捷方式到你的桌面,以后你会需要经常点击它启动Tabpy Server。
截至目前,如果不考虑代码可重用性的话,你现在就可以启动Tabpy Server,打开tableau然后在外部服务器中配置本地IP和端口9004,然后在计算字段中写python代码了。
不过机器学习模型包含大量代码,把它们都放在tableau小的可怜的计算字段编辑框里面显然不是一种友好的方式,或者你不想每次使用都要重新写一遍函数逻辑的话,最好还是使用Tabpy client, 在本地编辑好你要使用的函数或模型,然后发布到Tabpy Server,这样每个连接到Tabpy Server的tableau工作簿,只要输入你写好的函数名就可以直接使用它,是不是很方便?
Tabpy Client
和前面一样,如果你运行bat或sh脚本的话,client应该已经安装上了,不过你也可以选择手动安装它:
pip install tabpy-client
下面给出一个简单的例子说明如何使用tabpy client发布python代码,本地创建一个py文件写入一下代码:
import tabpy_client
client = tabpy_client.Client('http://localhost:9004/')
def add(x,y):
import numpy as np
return np.add(x, y).tolist()
client.deploy('add', add, 'Adds two numbers x and y')
在本地python环境中运行上面的代码,没有任何问题的话接着浏览器中打开 http://localhost:9004/endpoints 看一下,如果返回一堆包含JSON格式键值对的话说明你的函数已经加入到tabpy server了。
连接Tableau到Tabpy
接下来打开Tableau,依次点击“帮助-设置和性能-管理外部服务连接”
弹出的对话框输入地址和端口号:“localhost” "9004",测试一下,bingo!成功连接到server。
到这里,我们已经成功搭建好了Tabpy环境,Cheers!