python代码实现TSNE降维数据可视化教程


Posted in Python onFebruary 28, 2020

TSNE降维

降维就是用2维或3维表示多维数据(彼此具有相关性的多个特征数据)的技术,利用降维算法,可以显式地表现数据。(t-SNE)t分布随机邻域嵌入 是一种用于探索高维数据的非线性降维算法。它将多维数据映射到适合于人类观察的两个或多个维度。

python代码

km.py

#k_mean算法
import pandas as pd
import csv
import pandas as pd 
import numpy as np
 
 
#参数初始化
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')
 
from sklearn.cluster import KMeans
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
 
from sklearn.manifold import TSNE 
from pandas.core.frame import DataFrame
import pandas as pd 
import numpy as np 
 
import km as k 
#用TSNE进行数据降维并展示聚类结果
 
tsne = TSNE()
tsne.fit_transform(k.data_zs) #进行数据降维,并返回结果
tsne = pd.DataFrame(tsne.embedding_, index = k.data_zs.index) #转换数据格式
 
import matplotlib.pyplot as plt
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降维数据可视化教程

以上这篇python代码实现TSNE降维数据可视化教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中关于字符串对象的一些基础知识
Apr 08 Python
python实现清屏的方法
Apr 30 Python
python定时检查某个进程是否已经关闭的方法
May 20 Python
python3抓取中文网页的方法
Jul 28 Python
Python黑魔法Descriptor描述符的实例解析
Jun 02 Python
Python3使用PyQt5制作简单的画板/手写板实例
Oct 19 Python
Python3内置模块之json编解码方法小结【推荐】
Dec 09 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
Jul 17 Python
wxpython实现按钮切换界面的方法
Nov 19 Python
python3用PyPDF2解析pdf文件,用正则匹配数据方式
May 12 Python
详解matplotlib绘图样式(style)初探
Feb 03 Python
python中scipy.stats产生随机数实例讲解
Feb 19 Python
Python range与enumerate函数区别解析
Feb 28 #Python
使用python的turtle函数绘制一个滑稽表情
Feb 28 #Python
python使用pandas抽样训练数据中某个类别实例
Feb 28 #Python
如何使用repr调试python程序
Feb 28 #Python
Python编程快速上手——Excel到CSV的转换程序案例分析
Feb 28 #Python
python对文件的操作方法汇总
Feb 28 #Python
最新2019Pycharm安装教程 亲测
Feb 28 #Python
You might like
php设计模式 Interpreter(解释器模式)
2011/06/26 PHP
PHP下使用CURL方式POST数据至API接口的代码
2013/02/14 PHP
PHP写的加密函数,支持私人密钥(详细介绍)
2013/06/09 PHP
PHP实现HTML页面静态化的方法
2015/11/04 PHP
laravel框架模型和数据库基础操作实例详解
2020/01/25 PHP
jquery插件制作 表单验证实现代码
2012/08/17 Javascript
JS继承用法实例分析
2015/02/05 Javascript
JQuery实现鼠标滚轮滑动到页面节点
2015/07/28 Javascript
js实现左侧网页tab滑动门效果代码
2015/09/06 Javascript
Node.js的Web模板引擎ejs的入门使用教程
2016/06/06 Javascript
js数组常用操作方法小结(增加,删除,合并,分割等)
2016/08/02 Javascript
原生js+cookie实现购物车功能的方法分析
2017/12/21 Javascript
vue-路由精讲 二级路由和三级路由的作用
2020/08/06 Javascript
详解Vue中Axios封装API接口的思路及方法
2020/10/10 Javascript
[18:32]DOTA2 HEROS教学视频教你分分钟做大人-谜团
2014/06/12 DOTA
忘记ftp密码使用python ftplib库暴力破解密码的方法示例
2014/01/22 Python
python多线程方式执行多个bat代码
2016/06/07 Python
人机交互程序 python实现人机对话
2017/11/14 Python
python模块smtplib学习
2018/05/22 Python
解决python升级引起的pip执行错误的问题
2018/06/12 Python
python 给图像添加透明度(alpha通道)
2020/04/09 Python
解决Jupyter notebook中.py与.ipynb文件的import问题
2020/04/21 Python
PyQt5 控件字体样式等设置的实现
2020/05/13 Python
详解numpy1.19.4与python3.9版本冲突解决
2020/12/15 Python
HTML5 CSS3打造相册效果附源码下载
2014/06/16 HTML / CSS
业务员薪酬管理制度
2014/01/15 职场文书
新三好学生主要事迹
2014/01/23 职场文书
机械个人求职信范文
2014/01/24 职场文书
洗车工岗位职责
2014/03/15 职场文书
大学开学计划书
2014/04/30 职场文书
2014年大学班长工作总结
2014/11/14 职场文书
建筑安全员岗位职责
2015/02/15 职场文书
开学第一周值周总结
2015/07/16 职场文书
《观察物体》教学反思
2016/02/17 职场文书
2019年鼓励无偿献血倡议书
2019/09/17 职场文书
Python中文分词库jieba(结巴分词)详细使用介绍
2022/04/07 Python