【降维打击】T分布随机近邻嵌入(T-SNE)Python实践

news2024/10/7 16:19:01

  近几天看到论文里面有T分布随机近邻嵌入(T-distributed stochastic neighbor embedding, T-SNE)这种可视化方法,以前好像也看到过,但没有系统了解过,现有时间正好实践记录一下。

1. T-SNE简介

  T-SNE是一种降维方法,降维?PCA(Principal component analysis)也可以降维,T-SNE有什么特点呢?T-SNE是非线性的,而PCA是线性的。T-SNE非线性降维的思路是将高维特征投射到低维空间,使得原本在高维空间距离较远的数据点在低维空间同样距离较远,而原本在高维空间距离较近的数据点在低维空间同样距离较近。低维空间一般设为2维或者3维,方便可视化。

  然而,T-SNE很少用于降维,论文中看到的基本是用来可视化的,因为一般需要降维的数据都具有线性相关性,故PCA用的比较多。T-SNE可视化原始数据的分布,度量原始数据信息的相关性;T-SNE可视化神经网络提取的特征,评估不同模型的优劣性。本质上,近邻嵌入寻找保留了样本邻居关系在新维度上的较低数据表示。

  T-SNE理论详解

2. T-SNE的Python实践

  Python中实现T-SNE采用sklearn.manifold模块中的TSNE类。
TSNE类有几个重要参数:
  (1)n_components:嵌入空间的尺寸,即降维维度,其默认值为2。
  (2)perplexity:困惑度,与流形学习算法中使用的最近邻的数量有关,通常情况下,大数据集需要大困惑度,考虑选择5到50之间的值,不同的值可能导致显著不同的结果,perplexity的默认值为30。
  (3)learning_rate:T-SNE的学习率通常在[10.0,1000.0]范围内。如果学习率太高,数据可能看起来像一个“球”,任何一点与它最近的邻居的距离都差不多;如果学习率太低,大多数点可能看起来被压缩在密集的云中,几乎没有离群值;如果代价函数陷入一个糟糕的局部最小值,增加学习率可能会有所帮助,learning_rate的默认值为200。
  (4)n_iter:优化的最大迭代次数,至少应该是250,其默认值为1000。

用鸢尾花数据来试试T-SNE:设置降维到2

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sklearn.manifold import TSNE
from sklearn.datasets import load_iris

iris = load_iris()
X = iris.data
y = iris.target

tsne = TSNE(n_components=2, perplexity=15).fit_transform(X)
aa = tsne[:, 0]
bb = tsne[:, 1]

color = ['limegreen', 'cornflowerblue', 'orange']

plt.figure(dpi=300)
for i in range(tsne.shape[0]):
    plt.scatter(aa[i], bb[i], facecolor=color[y[i]], alpha=0.7)
plt.savefig('./tsne_2.jpg')
plt.show()

输出为:
在这里插入图片描述

值得注意的是:T-SNE每次运行会得到不同的可视化图像,但不同类别之间的距离是相似的

在这里插入图片描述

同样的,降低到3维也可以进行可视化

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sklearn.manifold import TSNE
from sklearn.datasets import load_iris

iris = load_iris()
X = iris.data
y = iris.target

tsne = TSNE(n_components=3, perplexity=15).fit_transform(X)
aa = tsne[:, 0]
bb = tsne[:, 1]
cc = tsne[:, 2]

color = ['limegreen', 'cornflowerblue', 'orange']

fig = plt.figure(dpi=300)
ax = Axes3D(fig)
for i in range(tsne.shape[0]):
    ax.scatter(aa[i], bb[i], cc[i], facecolor=color[y[i]], alpha=0.7)
plt.show()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/554145.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

搭建监控日志系统

在微服务或者集群架构中,一次请求的调用会跨多个服务(web,mysql,feign等)、多个模块(用户模块,商品模块等)、多个容器(用户模块可能有多个实例),这…

【科普】干货!带你从0了解移动机器人(二)—— 移动机器人硬件组成

移动机器人是一个多功能于一体的综合系统,内容涵盖了传感器技术、自动化技术、信息处理、电子工程等,它集环境感知、动态决策与规划于一体,是目前科学技术发展最活跃的领域之一。移动机器人的各种组件之间需要协同工作才能实现机器人的自主移…

【源码解析】RuoYi-Vue-Plus翻译功能 Translation 源码分析

类说明功能Translation通用翻译注解标注需要翻译的字段,用于实体类字段上TranslationType翻译类型注解标注翻译字段的实现类型,用于实现类上标注TransConstant翻译常量TranslationType 类型常量TranslationConfig翻译模块配置类配置初始化,设…

深度学习基础入门篇[9.2]:卷积之1*1 卷积(残差网络)、2D/3D卷积、转置卷积数学推导、应用实例

【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等 专栏详细介绍:【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化…

一文了解customRef 自定义ref使用

概念 按照文档中的说明:customRef 可以用来创建一个自定义的 ref,并对其依赖项跟踪和更新触发进行显式控制。它需要一个工厂函数,该函数接收 track 和trigger函数作为参数,并且应该返回一个带有 get 和 set 的对象。 其实大致意思…

公有云——阿里云ECS服务器入门精通(IaaS)(2)

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 一.ECS 实例规格族介绍 1.实例的架构类型、规格分类,详细信息 2.企业…

网络互联与互联网 - IP 子网划分详解

文章目录 1 概述1.1 划分目的1.2 划分原则1.3 子网掩码 2 IP 子网划分示例3 网工软考真题3.1 判断网络号和主机号3.2 计算可容纳的主机数3.3 子网划分 1 概述 IP 子网划分:实际上就是设计 子网掩码 的过程。原因:由于在五类的IP地址中,网络号…

【SpringBoot】数据校验API

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 数据校验API SpringBoot数据校验数据校验API的…

智能电动「唱主角」,哪些供应商在「领跑」智驾域控制器赛道

新势力,从哪里突围? 造车新势力在过去几年的成绩,已经代表了未来趋势:新能源汽车,尤其是纯电动。而对于智能化软硬件供应商,尤其是新势力供应商来说,亦是如此。 高工智能汽车研究院监测数据显…

深度学习框架-Tensorflow2:特点、架构、应用和未来发展趋势

引言 深度学习是一种新兴的技术,已经在许多领域中得到广泛的应用,如计算机视觉、自然语言处理、语音识别等。在深度学习中,深度学习框架扮演着重要的角色。Tensorflow是一种广泛使用的深度学习框架,已经成为深度学习的事实标准。…

全民拼购为什么能躺赢

大家好!我叫小鱼 新商业,新模式 新机会! 我们在拼购过程中 往往都觉得商家在亏钱 事实如此吗? 随着全球经济下行,党中央、国务院 高度重视发展流通扩大消费。 为推动流通创新发展,促进商业繁荣,…

回文子串问题

一:最长回文子串(leetcode 5) 给你一个字符串 s,找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。 示例 1: 输入:s "babad" 输出&#x…

盛元广通疾病预防控制中心检测管理信息系统

近些年,在疾病预防控制领域,公共卫生事件的发生都是通过信息化手段在日常工作中加以应用以及广泛深入的探索,加快疾控实验室信息化建设进程,可以有效把控不同类型检测任务中的每个节点,严防不同系统填报多次出现信息误…

SpringBoot——热部署

简单介绍: 在之前我们的项目中,当我们在编写了一个新的类并且要应用的时候,需要手动重启服务器重新部署一下,这个过程需要我们手动去完成,但是很多时候,比如我们在做测试,需要反复的修改代码&a…

第14章_视图

第14章_视图 1. 常见的数据库对象 对象描述表(TABLE)表是存储数据的逻辑单元,以行和列的形式存在,列就是字段,行就是记录数据字典就是系统表,存放数据库相关信息的表。系统表的数据通常由数据库系统维护,程序员通常不…

【Http协议②】http协议格式,请求格式,常见请求方法,请求报文,请求正文

前言: 大家好,我是良辰丫,上一篇文章我们已经了解过了http协议,这篇文章我将带领大家去学习http协议的一些属性,http协议格式,请求格式,常见请求方法,请求报文,请求正文.跟随我的脚步,一起遨游http的海洋.💞💞 🧑个人主页:良辰针不…

第14届蓝桥杯省赛真题剖析-2023年5月7日Scratch编程初级组

[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第135讲。 第14届蓝桥杯Scratch省赛真题,这是2023年5月7日举办的省赛,比赛仍然采取线上形式。试…

Spring Boot 的 Starter 以及实现一个自定义Starter

一、了解 Spring Boot Starter Spring Boot Starter 是 Spring Boot 中一个重要概念,它是一种提供依赖项的方式,简化 Spring 应用程序依赖管理,将一组相关的依赖项打包在一起,并提供一个依赖项描述文件,使开发人员可以…

视觉-激光融合SLAM :LVI - SAM与LIO - SAM的环境配置

目录 1.LIO-SAM配置 1.1 ROS 安装 1.2 安装gtsam 4.0.2 1.3 安装LIO-SAM 1.4 运行LIO-SAM 2. LVI - SAM安装 2.1 一些依赖库的安装 2.2 安装ceres1.1.14 2.3 安装LVI-SAM 1.LIO-SAM配置 机器:Ubuntu 18.04 内存:>16G CPU:Intel &…

电脑看不了视频?这样做,可以快速解决!

案例:我的电脑播放不了视频,这是什么原因。如何才能在电脑上播放视频?有没有解决的办法? 【我工作和学习都离不开电脑,今天工作的时候,我用电脑打开一个视频,却发现视频无法播放,怎…