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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。