5.2.4 聚类可是化工具-TSNE

通常输入的特征数据是高维的(大于3维),一般难以直接以原特征对聚类结果进行展示。而TSNE提供了一种有效的数据降维方式,让我们可以在2维或者3维的空间中展示聚类结果

对餐饮客户群聚类分析后的客户群数据可视化

import numpy as np
import pandas as pd
from sklearn.cluster import KMeans
from sklearn.manifold import TSNE
import matplotlib.pyplot as plt

# 初始化参数
inputfile = './data/consumption_data.xls'  # 销量及其他属性数据

data = pd.read_excel(inputfile, index_col = 'Id')  # 读取数据
data_zs = 1.0 * (data - data.mean()) / data.std()  # 数据标准化


model = KMeans(n_clusters=k, n_jobs=4, max_iter=iteration)  # 分为K类, 并发4
model.fit(data_zs)  # 开始聚类

# 标准化数据及其类别
## 每个样本对应得类别
r = pd.concat([data_zs, pd.Series(model.labels_, data.index)], axis=1)
r.columns = list(data.columns) + [u'聚类类别']

tsne = TSNE()
tsne.fit_transform(data_zs)   # 进行数据降维
tsne = pd.DataFrame(tsne.embedding_, index=data_zs.index) # 转换数据格式
plt.figure(figsize=(16, 8))
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False 

# 不同的类别用不同颜色和样式绘图

d =  tsne[r[u'聚类类别'] == 0]
plt.plot(d[0], d[1], 'r.')
d =  tsne[r[u'聚类类别'] == 1]
plt.plot(d[0], d[1], 'go')
d =  tsne[r[u'聚类类别'] == 2]
plt.plot(d[0], d[1], 'b*')
plt.show()
image.png

一样可以得到绿色的客户群是高价值客户群

你可能感兴趣的:(5.2.4 聚类可是化工具-TSNE)