1 什么是TSNE?

  • TSNE是由T和SNE组成,T分布和随机近邻嵌入(Stochastic neighbor Embedding).
  • TSNE是一种可视化工具,将高位数据降到2-3维,然后画成图。
  • t-SNE是目前效果最好的数据降维和可视化方法
  • t-SNE的缺点是:占用内存大,运行时间长。

2 入门的原理介绍

举一个例子,这是一个将二维数据降成一维的任务。我们要怎么实现?

首先,我们想到的最简单的方法就是舍弃一个维度的特征,将所有点映射到x轴上:

很明显,结果来看,蓝色和黄色的点交叠在一起,可是他们在二维上明明不属于一类

TSNE就是计算某一个点到其他所有点的距离,然后映射到t分布上,效果就会好一些。

3 进阶的原理介绍

  • t-SNE的降维关键:把高纬度的数据点之间的距离转化为高斯分布概率。
  • 高纬度相似度用高斯,低纬度用t分布,然后设置一个惩罚函数,就实现了x降低维度但是保留一定局部特征的方法。

3.1 高维距离表示

两个点在高维空间距离越近,那么这个概率值越大。

我们来看下面公式,两个公式的内容一致,只是写法不同

这个形式的公式,只是明显的展示这是高斯分布概率

3.2 低维相似度表示

在低纬度中,我们使用t分布来表示相似性。这里不探究为什么使用t分布而不是其他分布,具体内容可以看论文

3.3 惩罚函数

  • 现在我们有方法衡量高纬度和低纬度的点的相似性,我们如何保证高纬度相似度高的点在低纬度相似度也高?
  • t-SNE使用的是KL散度(Kullback-Leibler divergence)

3.4 为什么是局部相似性

为什么选择高斯和t分布

  • 降维必然带来信息损失,TSNE保留局部信息必然牺牲全局信息,而因为t分布比 高斯分布更加长尾,可以一定程度减少这种损失。

2 python实现

函数参数表:

parameters:描述

  • n_components :嵌入空间的维度
  • perpexity 混乱度,表示t-SNE优化过程中考虑邻近点的多少,默认为30,建议取值在5到50之间
  • early_exaggeration 表示嵌入空间簇间距的大小,默认为12,该值越大,可视化后的簇间距越大
  • learning_rate 学习率,表示梯度下降的快慢,默认为200,建议取值在10到1000之间
  • n_iter 迭代次数,默认为1000,自定义设置时应保证大于250
  • min_grad_norm 如果梯度小于该值,则停止优化。默认为1e-7
  • metric 表示向量间距离度量的方式,默认是欧氏距离。如果是precomputed,则输入X是计算好的距离矩阵。也可以是自定义的距离度量函数。
  • init 初始化,默认为random。取值为random为随机初始化,取值为pca为利用PCA进行初始化(常用),取值为numpy数组时必须shape=(n_samples, n_components)
  • verbose 是否打印优化信息,取值0或1,默认为0=>不打印信息。打印的信息为:近邻点数量、耗时、σ、KL散度、误差等
  • random_state 随机数种子,整数或RandomState对象
  • method 两种优化方法:barnets_hut和exact。第一种耗时O(NlogN),第二种耗时O(N^2)但是误差小,同时第二种方法不能用于百万级样本
  • angle 当method=barnets_hut时,该参数有用,用于均衡效率与误差,默认值为0.5,该值越大,效率越高&误差越大,否则反之。当该值在0.2-0.8之间时,无变化。
import numpy as np
import matplotlib.pyplot as plt
from sklearn import manifold,datasets
'''X是特征,不包含target;X_tsne是已经降维之后的特征'''
tsne = manifold.TSNE(n_components=2, init='pca', random_state=501)
X_tsne = tsne.fit_transform(X)
print("Org data dimension is {}. Embedded data dimension is {}".format(X.shape[-1], X_tsne.shape[-1]))'''嵌入空间可视化'''
x_min, x_max = X_tsne.min(0), X_tsne.max(0)
X_norm = (X_tsne - x_min) / (x_max - x_min)  # 归一化
plt.figure(figsize=(8, 8))
for i in range(X_norm.shape[0]):plt.text(X_norm[i, 0], X_norm[i, 1], str(y[i]), color=plt.cm.Set1(y[i]), fontdict={'weight': 'bold', 'size': 9})
plt.xticks([])
plt.yticks([])
plt.show()

# 参考内容

1. sklearn中tsne可视化 | 算法之道

2. 恒仔:笔记 | 什么是TSNE

3. http://frankchen.xyz/2018/01/30/Understanding-TSNE/

觉得本文有用的小伙伴,点个喜欢再走呗~微信公众号:【机器学习炼丹术】,也可以加作者好友交流:cyx645016617,记得备注【学校+姓名+方向】哦~

  • 强烈推荐 | “深度学习零基础视频教程”,“机器学习零基础视频教程”,"python零基础入门基础视频教程"等,公众号回复【视频教程】或者【白嫖】免费获取~
  • 关注公众号,回复【下载】有免费的杂七杂八的机器学习相关的PDF学习资料,持续更新哦!

两组声音的一维数据如何比较相似度_TSNE高维数据降维可视化工具 入门到理解 + python实现...相关推荐

  1. 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 惩罚 ...

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

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

  3. 02_clickhouse安装,卸载,启动/关闭服务,交互式命令(数据库创建,数据导入,查询),批模式数据导入,MySQL接口操作ClickHouse,DBeaver可视化工具安装与使用(学习笔记)

    1 ClickHouse安装 安装文件清单 clickhouse-client-${version}.noarch.rpm clickhouse-common-static-dbg-${version ...

  4. 数据科学家小贴士:10个最佳的可视化工具

    全文共2712字,预计学习时长10分钟 图源:unsplash 数据科学是当今IT行业最稳定的研究和实践领域之一,近十年来一直备受关注.事实证明,它对多个行业都大有益处.这项技术在顶级产品线方法和市场 ...

  5. 通过使用SPSS独立样本T检验,分析两组个案的差异(下)

    上一节,我们重点讲解了IBM SPSS Statistics独立样本T检验的检验原理.数据要求以及数据转换的方法.这部分的内容相当重要,建议先理解了上一节内容再学习本节的实例操作. 如图1所示,可以看 ...

  6. 单细胞测序两组差异分析—seurat包

    20210829修改 之前是根据官网+别人帖子写的总结,自己做了一段时间,把之前的再完善一下 尝试使用seurat包进行两组间差异分析 使用的是seurat包自带的数据 创建seurat对象 #首先载 ...

  7. 两分钟教你使用两款可视化工具

    作者 | Walker 编辑 | 安可 [导读]:本文详细介绍了两个数据可视化工具库并附python演练.欢迎大家点击上方蓝字关注我们的公众号:深度学习与计算机视觉. 我们本篇文章讲的数据可视化是面向 ...

  8. 手机信令数据怎么获得_聚焦手机信令数据支持城镇体系规划的技术框架

    导读 手机信令数据有效弥补了传统静态数据的不足,能作为城镇体系规划的基础数据之一.本文以手机信令数据获取的城镇联系度为基础,提出城镇体系规划中的空间结构.等级结构.中心城市腹地.区域重要交通设施服务范 ...

  9. python交互式数据可视化_python数据可视化工具

    熟知python的人都知道,python上常用的一款数据可视化工具是Matplotlib,但是Matplotlib是静态的.那么,Python中除了matplotlib外,还有哪些数据可视化工具呢?其 ...

最新文章

  1. 卢京潮自动控制原理ppt_视觉定位系统在贴片机中的使用与原理作用
  2. 相比薪酬,学习效率提升才是创业公司最有价值的报酬
  3. python爬虫去哪儿网_大型爬虫案例:爬取去哪儿网
  4. python中分支结构包括哪些_Python分支结构(switch)操作简介
  5. oracle unpivot 索引_oracle 11g 行列转换之unpivot、pivot
  6. it专员职责_【IT专员工作内容|工作职责|IT专员做什么】-看准网
  7. (转)IBM AIX系统安装
  8. 创建Orcale数据库链接访问外部数据库
  9. python对电影进行预测评分_TMDb电影数据分析 电影评分预测
  10. 【无向图求最小割集】
  11. java field的方法_Java Field set()用法及代码示例
  12. 学北邮计算机未来四十岁,2020年北京邮电大学计算机研究生保研心得
  13. Win11-GTX3060-配置Pytorch GPU
  14. excel从右边查找字符并截取
  15. U盘启动盘装系统Win10教程
  16. 重磅!阿里版本【ChatGPT】开放测评!
  17. 【MySQL学习】事务管理
  18. 【第163期】游戏策划做游戏:用UnityBolt实现游泳功能
  19. bzoj2096[Poi2010]Pilots*
  20. 【华为OJ】【099-MP3光标位置】

热门文章

  1. 计算机应用培训课程安排表,计算机培训教学计划
  2. 计算机二级vb资料百度云,全国计算机等级考试二级VB复习资料.pdf
  3. linux怎么看java环境变量_linux下配置jdk环境变量以及查看java版本
  4. 【数据库】数据库基础
  5. android编程文献,郭宏志. Android应用开发详解[M]. 2011.
  6. 23种设计模式(8)-外观模式
  7. oracle数据字典(2.说明)
  8. 查看linux cpu负载均衡,关于linux内核cpu进程的负载均衡
  9. 结点重要性与SIR模型基础代码
  10. Linux centos7 安装python3.6.5 和 pip3