TSNE目的:将高维数据降维并进行可视化,输入的数据为N个样本,每个样本具有M个特征(N_sample,M_feature)。输入的标签(N_sample,)。

基本原理:通过映射变换将每个数据点映射到相应的概率分布上。具体的是,在高维空间中使用高斯分布将距离转换为概率分布,在低维空间中,使用长尾分布来将距离转换为概率分布,从而是的高维度空间中的中低等距离在映射后能够有个较大的距离,使得降维时能够避免过多关注局部特征,而忽视全局特征。

from sklearn.manifold import TSNE
from sklearn.datasets import load_iris,load_digits
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
import numpy as np
%config InlineBackend.figure_format = "svg"digits = load_digits()
X_tsne = TSNE(n_components=2, random_state=33).fit_transform(digits.data)
X_pca = PCA(n_components=2).fit_transform(digits.data)font = {"color": "darkred","size": 13, "family" : "serif"}plt.style.use("dark_background")
plt.figure(figsize=(8.5, 4))
plt.subplot(1, 2, 1)
plt.scatter(X_tsne[:, 0], X_tsne[:, 1], c=digits.target, alpha=0.6, cmap=plt.cm.get_cmap('rainbow', 10))
plt.title("t-SNE", fontdict=font)
cbar = plt.colorbar(ticks=range(10))
cbar.set_label(label='digit value', fontdict=font)
plt.clim(-0.5, 9.5)
plt.subplot(1, 2, 2)
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=digits.target, alpha=0.6, cmap=plt.cm.get_cmap('rainbow', 10))
plt.title("PCA", fontdict=font)
cbar = plt.colorbar(ticks=range(10))
cbar.set_label(label='digit value', fontdict=font)
plt.clim(-0.5, 9.5)
plt.tight_layout()

TSNE原理性简单解释相关推荐

  1. 驳斥《沙盒用于数据防泄密是重大技术原理性失误》

    驳斥<沙盒用于数据防泄密是重大技术原理性失误> 最近网上出现了一篇名为<沙盒用于数据防泄密是重大技术原理性失误>的文章,经作者鉴定,是某不良公司***技术领先的竞争对手苏州深信 ...

  2. 广度优先遍历类似于二叉树的_二叉树的各种遍历方法的简单解释

    二叉树顾名思义,最多两个孩子. 一般规定一个二叉树,因为节点间有相互连接的原因,所以只要给定根节点,那么顺着寻找左孩子和右孩子便可以遍历到所有的节点,这就是遍历的直观解释. 而遍历分为深度遍历和广度遍 ...

  3. resultset不支持循环遍历_二叉树的各种遍历方法的简单解释

    二叉树顾名思义,最多两个孩子. 一般规定一个二叉树,因为节点间有相互连接的原因,所以只要给定根节点,那么顺着寻找左孩子和右孩子便可以遍历到所有的节点,这就是遍历的直观解释. 而遍历分为深度遍历和广度遍 ...

  4. javascript迭代器_JavaScript符号,迭代器,生成器,异步/等待和异步迭代器-全部简单解释...

    javascript迭代器 by rajaraodv 通过rajaraodv JavaScript符号,迭代器,生成器,异步/等待和异步迭代器-全部简单解释 (JavaScript Symbols, ...

  5. RAC 的一些概念性和原理性的知识

    RAC 的一些概念性和原理性的知识 一 集群环境下的一些特殊问题 1.1 并发控制 在集群环境中, 关键数据通常是共享存放的,比如放在共享磁盘上. 而各个节点的对数据有相同的访问权限, 这时就必须有某 ...

  6. Lucene的评分(score)机制的简单解释

     Lucene的评分(score)机制的简单解释 博客分类: Lucene lucene编程Apachethread  通过Searcher.explain(Query query, int do ...

  7. 常用CSS元素div ul dl dt ol的简单解释

    几个css元素的简单解释 div ul dl dt oldiv,这个很常见,块级元素,div尽量少用,和table一样,嵌套越少越好 ol 有序列表. <ol> <li>--& ...

  8. python的objectproperty,python中property(lambda self: object())简单解释,,最后4行lambda

    python中property(lambda self: object())简单解释,,最后4行lambda 最后4行lambda.问题是:如何运作?它们的含义和结果是什么?您能否以简单的方式显示该声 ...

  9. 简单解释什么是 依赖注入 和 控制反转

    简单解释什么是 依赖注入 和 控制反转 2017-07-09 关于 依赖注入 与 控制反转 的概念有些人觉得很难理解,最近在给别人讲这个概念的时候梳理了一个比较好理解的解释,而且我认为非技术人员也应该 ...

最新文章

  1. 杭州电子科技大学计算机组成原理期末试卷,杭州电子科技大学计算机组成原理期末样卷(A)...
  2. 浅谈 Python 程序和 C 程序的整合
  3. 用户线程和内核线程之间的区别
  4. oracle 删除用户 递归,ORACLE递归查询遍历详解
  5. c++判断ftp服务器文件存在性判断_BitTorrent协议与传统文件分发协议对比
  6. SpringBoot入门-基础入门
  7. Web 开发中很实用的10个效果
  8. eclipse下没有build project的解决方法
  9. 必须收藏!没有经验的程序员该怎么找工作?
  10. This generated password is for development use only. Your security configuration must be updated bef
  11. XML数据解析-SAX和DOM
  12. 什么是迭代和增量开发
  13. Latex 中如何使插图的位置不跑到开头而紧跟插入的文字后
  14. UltraEdit打开文件,中文显示为乱码的解决方法
  15. python儿童编程培训班-杭州比较好的儿童Python编程培训班推荐
  16. moloch流量回溯_用moloch和elastic索引网络流量
  17. 基于RNN的中文古诗词生成神经网络实现
  18. 惊呆了!被公司辞退拿了 22 万补偿金,原东家称每月涨薪 7000,只要退还 22 万...
  19. 瑞芯微RV1126/1109开发流程之驱动升级
  20. flask jsonify

热门文章

  1. 原生sql增加字段删除字段
  2. Alexnet在android手机中的tensorflow和arm compute libraray的性能对比
  3. MySQL之数据库三大范式
  4. cpu对推动计算机发展的作用,一篇能让你详细了解CPU的作用与发展的文章!
  5. 单片机自动调光C语言,51单片机led灯渐变PWM调光(渐亮渐灭)C语言和汇编源程序
  6. 怀旧服10月3日服务器维护,魔兽怀旧服:即将开放怀旧服PTR服务器 3/10开放阿拉希...
  7. i5 10400核显什么水平
  8. 使用Memory-driven Transformer生成医疗影像报告
  9. Android推送平台试用总结报告
  10. L1范数和L2范数的区别