python代码实现TSNE降维数据可视化教程
TSNE降维
降维就是用2维或3维表示多维数据(彼此具有相关性的多个特征数据)的技术,利用降维算法,可以显式地表现数据。(t-SNE)t分布随机邻域嵌入是一种用于探索高维数据的非线性降维算法。它将多维数据映射到适合于人类观察的两个或多个维度。
python代码
km.py
#k_mean算法
importpandasaspd
importcsv
importpandasaspd
importnumpyasnp
#参数初始化
inputfile='x.xlsx'#销量及其他属性数据
outputfile='x_1.xlsx'#保存结果的文件名
k=2#聚类的类别
iteration=3#聚类最大循环次数
data=pd.read_excel(inputfile,index_col='Id')#读取数据
data_zs=1.0*(data-data.mean())/data.std()#数据标准化,std()表示求总体样本方差(除以n-1),numpy中std()是除以n
print('data_zs')
fromsklearn.clusterimportKMeans
model=KMeans(n_clusters=k,max_iter=iteration)#分为k类
#model=KMeans(n_clusters=k,n_jobs=4,max_iter=iteration)#分为k类,并发数4
print('data_zs')
model.fit(data_zs)#开始聚类
#简单打印结果
r1=pd.Series(model.labels_).value_counts()#统计各个类别的数目
r2=pd.DataFrame(model.cluster_centers_)#找出聚类中心
r=pd.concat([r2,r1],axis=1)#横向连接(0是纵向),得到聚类中心对应的类别下的数目
print('data_zs')
print(r)
r.columns=list(data.columns)+[u'类别数目']#重命名表头
print(r)
#详细输出原始数据及其类别
r=pd.concat([data,pd.Series(model.labels_,index=data.index)],axis=1)#详细输出每个样本对应的类别
r.columns=list(data.columns)+[u'聚类类别']#重命名表头
r.to_excel(outputfile)#保存结果
TSNE.py
#coding=utf-8
fromsklearn.manifoldimportTSNE
frompandas.core.frameimportDataFrame
importpandasaspd
importnumpyasnp
importkmask
#用TSNE进行数据降维并展示聚类结果
tsne=TSNE()
tsne.fit_transform(k.data_zs)#进行数据降维,并返回结果
tsne=pd.DataFrame(tsne.embedding_,index=k.data_zs.index)#转换数据格式
importmatplotlib.pyplotasplt
plt.rcParams['font.sans-serif']=['SimHei']#用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False#用来正常显示负号
#不同类别用不同颜色和样式绘图
d=tsne[k.r[u'聚类类别']==0]#找出聚类类别为0的数据对应的降维结果
plt.plot(d[0],d[1],'r.')
d=tsne[k.r[u'聚类类别']==1]
plt.plot(d[0],d[1],'go')
#d=tsne[k.r[u'聚类类别']==2]
#plt.plot(d[0],d[1],'b*')
plt.savefig("data.png")
plt.show()
数据格式
数据需要用xlsx文件存储,表头名为Id。
执行TSNE.py即可获得可视化图片。
以上这篇python代码实现TSNE降维数据可视化教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。