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之玩转字符串(3)
Sep 14 Python
Python中Django框架利用url来控制登录的方法
Jul 25 Python
Django内容增加富文本功能的实例
Oct 17 Python
Python基于csv模块实现读取与写入csv数据的方法
Jan 18 Python
Windows下Anaconda2安装NLTK教程
Sep 19 Python
python使用pip安装SciPy、SymPy、matplotlib教程
Nov 20 Python
Python动态导入模块:__import__、importlib、动态导入的使用场景实例分析
Mar 30 Python
利用python绘制数据曲线图的实现
Apr 09 Python
Python selenium自动化测试模型图解
Apr 15 Python
python怎么自定义捕获错误
Jun 29 Python
Python 串口通信的实现
Sep 29 Python
Python天气语音播报小助手
Sep 25 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支持中文字符串分割的函数
2015/05/28 PHP
PHP反射API示例分享
2016/10/08 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
PHP+Ajax实现上传文件进度条动态显示进度功能
2018/06/04 PHP
PHP实现的函数重载功能示例
2018/08/03 PHP
Yii2语言国际化的配置教程
2018/08/19 PHP
深入理解JavaScript系列(3) 全面解析Module模式
2012/01/15 Javascript
Highcharts使用简例及异步动态读取数据
2015/12/30 Javascript
jquery横向纵向鼠标滚轮全屏切换
2017/02/27 Javascript
js实现颜色阶梯渐变效果(Gradient算法)
2017/03/21 Javascript
详解Vue.js项目API、Router配置拆分实践
2018/03/16 Javascript
npm配置国内镜像资源+淘宝镜像的方法
2018/09/07 Javascript
AngularJS 多指令Scope问题的解决
2018/10/25 Javascript
VueJs里利用CryptoJs实现加密及解密的方法示例
2019/04/29 Javascript
JS如何生成动态列表
2020/09/22 Javascript
[35:44]2014 DOTA2华西杯精英邀请赛 5 24 iG VS VG
2014/05/26 DOTA
[05:40]DOTA2荣耀之路6:Wings最后进攻
2018/05/30 DOTA
python传递参数方式小结
2015/04/17 Python
在Python中处理字符串之isdecimal()方法的使用
2015/05/20 Python
python 遍历目录(包括子目录)下所有文件的实例
2018/07/11 Python
python实现连续图文识别
2018/12/18 Python
Python写一个基于MD5的文件监听程序
2019/03/11 Python
Python实现插入排序和选择排序的方法
2019/05/12 Python
Python3+PyInstall+Sciter解决报错缺少dll、html等文件问题
2019/07/15 Python
python字典的常用方法总结
2019/07/31 Python
python 工具 字符串转numpy浮点数组的实现
2020/03/14 Python
查看已安装tensorflow版本的方法示例
2020/04/19 Python
HTML5 本地存储和内容按需加载的思路和方法
2011/04/07 HTML / CSS
cf收人广告词大全
2014/03/14 职场文书
房屋产权共有协议书范本
2014/11/03 职场文书
小学生优秀评语
2014/12/29 职场文书
护士节慰问信
2015/02/15 职场文书
Vue实现下拉加载更多
2021/05/09 Vue.js
Oracle创建只读账号的详细步骤
2021/06/07 Oracle
JavaScript函数柯里化
2021/11/07 Javascript
Python字符串常规操作小结
2022/04/03 Python