上一篇关于tableau调用python的文章包含基本的原理、环境配置以及简单的调用实现,本文章是tableau调用python脚本的第二篇,与之前的基础篇相比有所升级,用无监督学习的kmeans聚类。

本篇文章不再讲环境配置及基础原理,如需了解,请移步之前文章。

如果是拿来主义,请下翻拷贝源代码

一、Kmeans介绍

初始随机给定K个簇中心,按照最邻近原则把待分类样本点分到各个 簇。然后按平均法重新计算各个簇的质心,从而确定新的簇心。一直迭代,直到簇心的移动距离小于某个给定的值或者蔟心的距离不再变化。

优点:原理比较简单,实现也是很容易,收敛速度快。

聚类效果较优。

算法的可解释度比较强。

主要需要调参的参数仅仅是簇数k。

缺点:簇数目k需要事先给定,但非常难以选定

初始值中心点选择的不好,可能无法得到有效的聚类结果

对噪音和离群点敏感,会影响中心点的位置

不适合于发现非球状簇

二、数据准备

数据来自上一篇文章,已提供下载,kmeans的应用也在该文章中酷酷的章鱼哥:用户生命周期Kmeans聚类并绘制雷达图zhuanlan.zhihu.com

三、tableau中脚本的编写

python中的脚本只要符合python语法,写起来随心所欲

print 函数打印的内容会在tabpy server 控制台中显示

为了方便大家复用,脚本copy如下:

import numpy as np
import pandas as pd
from sklearn.cluster import KMeans
from sklearn.preprocessing import MinMaxScaler
print()
print('*'*60)
# data=np.array([_arg1,_arg2,_arg3,_arg4,_arg5]).T
data=np.column_stack([_arg1,_arg2,_arg3,_arg4,_arg5])
print(data[:3])
k = 5 # 定义聚类个数
# 数据归一化
min_max_scale=MinMaxScaler()
data=min_max_scale.fit_transform(data)
#调用k-means算法,进行聚类分析
kmodel = KMeans(n_clusters = k)
kmodel.fit(data)
return kmodel.labels_.tolist()

四、结果展示tableau中聚类结果tableau server 控制台信息

后面会分享服务器部署有监督的机器学习算法,并用tableau可视化,在第一篇文章中讲过服务器上部署方法,感兴趣的小伙伴们可以自己先试试