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

news/2024/11/24 19:28:20/

  近几天看到论文里面有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_irisiris = load_iris()
X = iris.data
y = iris.targettsne = 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_irisiris = load_iris()
X = iris.data
y = iris.targettsne = 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.ppmy.cn/news/82574.html

相关文章

外包公司程序员的水平真的很垃圾吗?

在互联网圈存在着这么一条鄙视链:大厂程序员看不起自研小厂程序员,自研小厂程序员看不起外包程序员,很多人觉得自己进了外包以后简历就被污染了,所以哪怕失业都不愿意进外包…… 实际上,何不食肉糜…… 外包可能还把你…

高丰度铈磁体

随着烧结钕铁硼应用领域的不断拓展和产量的快速增长,相应的稀土资源也被大量开采。稀土矿中各种稀土元素是共生的,但在钕铁硼的制备过程中,利用的主要是在轻稀土中质量分数为25%的镨Pr和钕Nd元素,这样对轻稀土中占比为质量分数49%…

asp网站Repuest获取Http网络读卡器刷卡数据Response回应驱动读卡器显示响声

RFID网络WIFI无线TCP/UDP/HTTP可编程二次开发读卡器POE供电语音-淘宝网 (taobao.com) 中文液晶显示http协议网络读卡器是一款能利用现有的计算机网络,不需要独立布线就可以组成一个高性能低成本实时联网ID卡管理系统的端终设备,刷卡后即时向远程计算机传…

苹果手机照片删除怎么恢复

苹果手机照片删除怎么恢复?当你不小心删除了一些重要的照片后,可能会感到不知所措。不过,你不必担心,因为在苹果手机上,这些被误删除的照片并没有完全消失。事实上,这些照片只是被标记为可以被覆盖的数据,…

第二十五节:通信之WLAN(WiFi聚合)

欢迎大家一起学习探讨通信之WLAN。为了减少帧交互中额外资源占用开销,提高WiFi网络系统整体运行效率,802.11n协议引入定义了聚合功能。本节将基于协议定义内容和实例,详细分析“A-MSDU"和“A-MPDU”两种聚合功能。 关键字 S1G(Sub 1 GH…

macbook2023系统清理软件cleanmymac中文版

cleanmymac x 中文版基本都是大家首选Mac清理软件了。它集各种功能于一身,几乎满足用户所有的清理需求。它可以清理,优化,保养和监测您的电脑,确保您的Mac运行畅通无阻!支持一键快速清理Mac,快速检查并安全…

网络协议 — IPSec 安全隧道协议族

目录 文章目录 目录IPSec 安全隧道协议族封装协议Authentication HeaderEncapsulating Security Payload 封装模式传输模式隧道模式 安全偶联协商Security AssociationInternet Key ExchangeIKE 的交换过程 IPSec Virtual Private NetworkIPSec NAT-TTransport 模式Tunnel 模式…

Day03 03-MySQL函数大全与详解

文章目录 第九章 MySQL的函数9.1 功能性函数9.1.1 IFNULL9.1.2 IF9.1.3 CASE9.1.4 行转列实现9.1.5 exists 9.2 日期函数9.3 字符串函数9.4 数学函数9.5 使用示例9.6 自定义函数9.6.1 什么是自定义函数9.6.2 函数与存储过程的区别9.6.3 自定义函数实现 9.7 窗口函数9.7.1 窗口函…