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二分法实现实例
Nov 21 Python
详解python 字符串和日期之间转换 StringAndDate
May 04 Python
SVM基本概念及Python实现代码
Dec 27 Python
基于anaconda下强大的conda命令介绍
Jun 11 Python
python 顺时针打印矩阵的超简洁代码
Nov 14 Python
Python通过for循环理解迭代器和生成器实例详解
Feb 16 Python
python实现微信每日一句自动发送给喜欢的人
Apr 29 Python
python进阶之自定义可迭代的类
Aug 20 Python
对python中的装包与解包实例详解
Aug 24 Python
分享8点超级有用的Python编程建议(推荐)
Oct 13 Python
wxPython电子表格功能wx.grid实例教程
Nov 19 Python
总结python多进程multiprocessing的相关知识
Jun 29 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 Session_Regenerate_ID函数双释放内存破坏漏洞
2011/01/27 PHP
joomla组件开发入门教程
2016/05/04 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
利用jQuery操作对象数组的实现代码
2011/04/27 Javascript
javascript判断iphone/android手机横竖屏模式的函数
2011/12/20 Javascript
jquery 插件学习(六)
2012/08/06 Javascript
jQuery javaScript捕获回车事件(示例代码)
2013/11/07 Javascript
jQuery插件Elastislide实现响应式的焦点图无缝滚动切换特效
2015/04/12 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
[原创]JS基于FileSaver.js插件实现文件保存功能示例
2016/12/08 Javascript
用js制作淘宝放大镜效果
2020/10/28 Javascript
JS点击缩略图整屏居中放大图片效果
2017/07/04 Javascript
JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】
2017/09/28 Javascript
AngularJS 教程及实例代码
2017/10/23 Javascript
Vue Router去掉url中默认的锚点#
2018/08/01 Javascript
关于vue编译版本引入的问题的解决
2018/09/17 Javascript
js实现课堂随机点名系统
2019/11/21 Javascript
el-form 多层级表单的实现示例
2020/09/10 Javascript
[40:03]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#1EHOME VS Archon
2016/03/02 DOTA
[00:52]DOTA2齐天大圣预告片
2016/08/13 DOTA
python实现ip查询示例
2014/03/26 Python
Python使用pickle模块储存对象操作示例
2018/08/15 Python
python 计算方位角实例(根据两点的坐标计算)
2020/01/17 Python
python小白学习包管理器pip安装
2020/06/09 Python
python归并排序算法过程实例讲解
2020/11/04 Python
详解使用scrapy进行模拟登陆三种方式
2021/02/21 Python
HTML5新标签兼容——> 的两种方法
2018/09/12 HTML / CSS
数学系个人求职信范文
2014/01/30 职场文书
剪彩仪式主持词
2014/03/19 职场文书
吃空饷专项整治方案
2014/10/27 职场文书
预备党员入党思想汇报(范文)
2019/08/14 职场文书
2019入党申请书范文3篇
2019/08/21 职场文书
Java面试题冲刺第十七天--基础篇3
2021/08/07 面试题
源码分析Redis中 set 和 sorted set 的使用方法
2022/03/22 Redis
Golang连接并操作MySQL
2022/04/14 MySQL
Nginx如何配置多个服务域名解析共用80端口详解
2022/09/23 Servers