码迷,mamicode.com
首页 > 其他好文 > 详细

用TSNE进行数据降维并展示聚类结果

时间:2019-01-11 16:04:17      阅读:2427      评论:0      收藏:0      [点我收藏+]

标签:obs   output   model   技术分享   cat   rom   降维   data   form   

TSNE提供了一种有效的数据降维方式,让我们可以在2维或3维的空间中展示聚类结果。

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from sklearn.manifold import TSNE
import pandas as pd
import matplotlib.pyplot as mp

inputfile = data/consumption_data.xls
outputfile = tmp/data_type3.xls
data = pd.read_excel(inputfile, index_col=Id)
data_zs = 1.0 * (data - data.mean()) / data.std()

from sklearn.cluster import KMeans
k = 3
iteration = 800
model = KMeans(n_clusters=k, n_jobs =4, max_iter=iteration)  # n_jobs 并发数设置为4
model.fit(data_zs)  # 开始聚类

r1 = pd.Series(model.labels_).value_counts()  # 统计各个类别的数目
r2 = pd.DataFrame(model.cluster_centers_)  # 找出聚类中心
r = pd.concat([data,pd.Series(model.labels_,index = data.index)],axis=1)
r.columns = list(data.columns) + [r聚类类别] 

tsne = TSNE()
tsne.fit_transform(data_zs)  # 进行数据降维
tsne = pd.DataFrame(tsne.embedding_, index=data_zs.index)

mp.rcParams[font.sans-serif] = [SimHei]
mp.rcParams[axes.unicode_minus] = False
d = tsne[r[r聚类类别] == 0]
mp.plot(d[0], d[1], r.)
d = tsne[r[r聚类类别] == 1]
mp.plot(d[0], d[1], go)
d = tsne[r[r聚类类别] == 2]
mp.plot(d[0], d[1], b*)
mp.show()

运行结果:

技术分享图片

 

用TSNE进行数据降维并展示聚类结果

标签:obs   output   model   技术分享   cat   rom   降维   data   form   

原文地址:https://www.cnblogs.com/dancyhou/p/10255250.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!