使用TSNE对KMeans聚类的结果以二维的方式展现出来。
接博客[Python聚类] K-Means聚类算法分类
中的代码。
#-*- coding: utf-8 -*-
#接博客[Python聚类] K-Means聚类算法分类中的代码
from sklearn.manifold import TSNE
tsne = TSNE()
tsne.fit_transform(data_zs) #进行数据降维
tsne = pd.DataFrame(tsne.embedding_, index = data_zs.index) #转换数据格式
>>>tsne.fit_transform(data_zs) #进行数据降维
array([[-26.155815 , -1.9875094 ],
[ 12.832463 , 25.537851 ],
[ 3.1898763 , -30.703415 ],
...,
[ 0.37199622, 2.2877667 ],
[ -5.8555183 , 7.3596044 ],
[-11.370499 , 12.9076395 ]], dtype=float32)
>>>tsne.head()
0 1
Id
1 -26.155815 -1.987509
2 12.832463 25.537851
3 3.189876 -30.703415
4 -11.367756 -30.414982
5 14.839862 12.988671
import matplotlib.pyplot as plt
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()