TSNE 高维数据可视化

标签: python 机器学习 神经网络


在神经网络中,我们最后一层一般都是高纬度的数据,但是有时候我们可能想看一下这些高纬度数据的分布情况,这个时候就需要用TSNE,其实TSNE本质上就是先利用PCA降维,比如降到二维或者三维,做法就是把神经网络某层的特征降维,然后映射到二维或者三维空间可视化。这样就能看到各层特征分布情况。

TSNE降维

from sklearn.manifold import TSNE
tsne = TSNE(perplexity=30, n_components=2, init='pca', n_iter=5000) # TSNE降维,降到2
# 只需要显示前500个
plot_only = 500
# 降维后的数据
low_dim_embs = tsne.fit_transform(last_layer.data.numpy()[:plot_only, :])
# 标签
labels = by.numpy()[:plot_only]
plot_with_labels(low_dim_embs, labels,"epoch{}_step{}".format(e,step))

这里用的数据是之前pytroch进行mnist中的,last_layer代表最后一层特征,这里降到了2维,by代表一个批次的y,为了后面可视化可以区分,plot_with_labels是一个自定义方法,用来可视化降维后的数据。

可视化


from matplotlib import cm
def plot_with_labels(lowDWeights, labels,i):plt.cla()# 降到二维了,分别给x和yX, Y = lowDWeights[:, 0], lowDWeights[:, 1]# 遍历每个点以及对应标签for x, y, s in zip(X, Y, labels):c = cm.rainbow(int(255/9 * s)) # 为了使得颜色有区分度,把0-255颜色区间分为9分,然后把标签映射到一个区间plt.text(x, y, s, backgroundcolor=c, fontsize=9)plt.xlim(X.min(), X.max())plt.ylim(Y.min(), Y.max()); plt.title('Visualize last layer')plt.savefig("{}.jpg".format(i))

可视化就是把前面降维过的数据画到二维空间,这里的关键点在于同一类别的用同种颜色画,体现在代码c = cm.rainbow(int(255/9 * s))以及backgroundcolor=c上面,这样的话如果两个点的标签同,那么绘制的颜色也是一样的。

下图是一个epoch后的分布情况可以看出数据已经很有区分性了:

TSNE 高维数据可视化相关推荐

  1. python高维数据_t-SNE高维数据可视化(python)

    t-SNE实践--sklearn教程 t-SNE是一种集降维与可视化于一体的技术,它是基于SNE可视化的改进,解决了SNE在可视化后样本分布拥挤.边界不明显的特点,是目前最好的降维可视化手段. 关于t ...

  2. R使用tsne进行高维数据可视化实战:二维可视化、三维可视化

    R使用tsne进行高维数据可视化实战:二维可视化.三维可视化 t-SNE是一种非常强大的技术,可以用于多维数据中的可视化分析(寻找模式).它对复杂多维数据的可视化能力是显而易见的,它以无监督的方式对数 ...

  3. Python使用tsne进行高维数据可视化实战:二维可视化、三维可视化

    Python使用tsne进行高维数据可视化实战:二维可视化.三维可视化 # 绘制二维可视化图像并添加标签字符函数 def plot_embedding(data, label, title):x_mi ...

  4. python用tsne降维图像_python代码实现TSNE降维数据可视化教程

    TSNE降维jne免费资源网 降维就是用2维或3维表示多维数据(彼此具有相关性的多个特征数据)的技术,利用降维算法,可以显式地表现数据.(t-SNE)t分布随机邻域嵌入 是一种用于探索高维数据的非线性 ...

  5. matlab利用t-SNE实现高维数据可视化(tsne函数用法实例)

    tsne用法 tsne - t-Distributed Stochastic Neighbor Embedding This MATLAB function returns a matrix of t ...

  6. tSNE—高维数据降维可视化(理论部分)

    t-SNE是一种降维方法,PCA主成分分析.LDA等属于线性降维,t-SNE属于非线性降维,是一种流形学习方法(Manifold Learning). 如图所示的曲面上,两点之间的欧式距离为红色虚线所 ...

  7. 文件可视化编辑_高维数据可视化必备图形平行坐标图

    作者:科研猫 | 小飞鼠 责编:科研猫 | 依米 如果我们想比较某个数值在不同分组之间的变化差异.或者随着时间序列的变化趋势,往往会用到折线图.折线图是在我们的科研绘图当中最为常用的图形之一. 正如在 ...

  8. 【Python机器学习】PCA降维算法讲解及二维、高维数据可视化降维实战(附源码 超详细)

    需要全部代码请点赞关注收藏后评论区留言私信~~~ 维数灾难 维数灾难是指在涉及到向量计算的问题中,当维数增加时,空间的体积增长得很快,使得可用的数据在空间中的分布变得稀疏,向量的计算量呈指数倍增长的一 ...

  9. TSNE高维数据降维可视化工具 + python实现

    文章目录 1.概述 1.1 什么是TSNE 1.2 TSNE原理 1.2.1入门的原理介绍 1.2.2进阶的原理介绍 1.2.2.1 高维距离表示 1.2.2.2 低维相似度表示 1.2.2.3 惩罚 ...

  10. 180512 tensorboard高维数据可视化

    Tensoflow实战Google深度学习框架-第2版-第11章 tensorboard可视化 from tensorflow.contrib.tensorboard.plugins import p ...

最新文章

  1. R语言使用across函数一次性将多个数据列进行离散化(categorize):或者pivot_longer函数转化为长表、对转化为长表的数值数据列进行离散化、pivot_wider将数据转化为宽表
  2. 《科学:无尽的前沿》分享会在京举办,助力中国企业打造“科研的应许之地”
  3. C语言小游戏 ——推箱子
  4. 运算符的优先级和结合性
  5. js实现前端根据部对象属性对对象数组进行排序
  6. MyBatis Generator.xml详解
  7. 仿真软件EWB,NI软件
  8. 苹果笔记本能玩英雄联盟吗_英雄联盟手游要上线了,王者荣耀还会有人玩吗
  9. 【python报错】Python词云库wordcloud不显示中文
  10. Oracle前期准备
  11. Android半圆形进度条动画,Android:半圆形进度条
  12. Google引擎搜索技巧
  13. 泰勒级数(Taylor Series)和利用python计算自然常数
  14. 使用JME3开发的Android 3D游戏 - 落樱之剑v2.2
  15. 解决GTX1050Ti显卡下安装Deepin15.7完成后重启卡logo问题
  16. 32位ARM®Cortex®-M0+内核单片机 XL32F003系列MCU
  17. 博客常见线条背景动效-JavaScript
  18. Flutter 利用 Hero 动效实现列表详情页的无缝切换
  19. HTML5期末大作业:日式料理网站设计——简洁日式料理餐饮(4页) HTML+CSS+JavaScript 父亲美食HTM5网页设计作业成品
  20. 来自C++之父主页的《C++的应用》

热门文章

  1. EDA与VHDL题目——38译码器
  2. ISO9001、ISO14001和ISO45001体系审核时需要准备哪些资料?
  3. 编程珠玑第三章笔记加习题解答
  4. ibm服务器报错代码大全_IBM服务器错误代码大全
  5. matlab-排队模型和排队系统仿真
  6. 一千啊计算机英语,计算机英语900句
  7. OIBH杯第三次普及组模拟赛T1 立体井字棋
  8. 昂达v819i安卓bios
  9. oracle怎么删除.dat,oracle 手工删库
  10. oracle多表查询员工和上级,oracle多表查询之经典面试题