t-SNE降维原理及python实现代码

t-SNE降维原理及python实现代码
t-SNE(Stochastic Neighbor Embedding  t分布随机邻域嵌⼊)
PCA的局限性
PCA是⼀种线性算法,它不能解释特征之间的复杂多项式关系。⽽t-SNE是基于在邻域图上随机游⾛的概率分布来到数据内的结构。
线性降维算法的⼀个主要问题是不相似的数据点放置在较低维度表⽰为相距甚远。但为了在低维度⽤⾮线性流形表⽰⾼维数据,相似数据点必须表⽰为⾮常靠近,这不是线性降维算法所能做的。
t-SNE算法的细节
步骤1:
随机邻接嵌⼊(SNE)通过将数据点之间的⾼维欧⼏⾥得距离转换为表⽰相似性的条件概率⽽开始,数据点之间的条件概率由
外国体育明星
下式给出:
其中是以数据点为中⼼的⾼斯⽅差。
步骤2:
对于⾼维数据点和的低维对应点和⽽⾔,可以计算类似的条件概率
清华简
成都江汉路SNE试图最⼩化条件概率的差异。
步骤3:
为了测量条件概率差的和最⼩值,SNE使⽤梯度下降法最⼩化KL距离。⽽SNE代价函数关注于映射中数据的局部结构,优化该函数是⾮常困难的,⽽t-SNE采⽤重尾分布,以减轻拥挤问题和SNE的优化问题。
步骤4:
定义困惑度:
其中是⾹农熵:海门市海南中学
t-SNE实际上是做什么?
t-SNE⾮线性降维算法通过基于具有多个特征的数据点的相似性识别观察到的簇来在数据中到模式。本质上是⼀种降维和可视化技术。另外t-SNE的输出可以作为其他分类算法的输⼊特征。
t-SNE与其他降维算法相⽐
基于所实现的精度,将t-SNE与PCA和其他线性降维模型相⽐,结果表明t-SNE能够提供更好的结果。这是因为算法定义了数据的局部和全部结构之间的软边界。
python代码实现t-SNE降维
# coding=utf-8
from sklearn.manifold import TSNE
frame import DataFrame
import pandas as pd
import numpy as np
l=[]
with open('1.csv','r') as fd:
过继转移line= fd.readline()
while line:
if line =="":
continue
line = line.strip()
word = line.split(",")
l.append(word)
line= fd.readline()
data_l=DataFrame(l)
print ("data_l ok")
太白参dataMat = np.array(data_l)
pca_tsne = TSNE(n_components=2)
newMat = pca_tsne.fit_transform(dataMat)
data1 = DataFrame(newMat)
<_csv('2.csv',index=False,header=False)

本文发布于:2024-09-22 18:29:38,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/204413.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   算法   线性   降维   条件   概率   结构   局部
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议