tsne用法
tsne - t-Distributed Stochastic Neighbor Embedding
This MATLAB function returns a matrix of two-dimensional embeddings of the high-dimensional rows of X.
该函数作用就是将高维数据以二维坐标形式进行可视化。
一、语法
- Y = tsne(X)
- Y = tsne(X,Name,Value)
两种使用方法,一般使用选择第一种即可。
二、使用步骤
步骤1:数据矩阵X为1024x320,列向量表示1024维数据样本,共320个样本点
步骤2:Y = tsne(X);
load YaleB.mat
X = fea(:,1:320); % 320个样本数据,以1024维列向量表示,组成1024x320数据矩阵X
X = matrixNormalize(X); % 数据标准化
label = gnd(1:320); % 数据标签1-5,样本共5类
X = X'; % 由于tsne标准输入数据以行向量表示,因此先转置
Y = tsne(X); % 得到的矩阵为Nx2,N为N个样本,Y矩阵为320x2
gscatter(Y(:,1), Y(:,2),label);% 若无label输入,则画出的图没有色彩区分
三、Y = tsne(X,Name,Value)用法
- Y = tsne(X,‘Algorithm’,‘exact’);
- Y = tsne(X,‘Algorithm’,‘exact’,‘Distance’,‘euclidean’);
’Algorithm’ — tsne 进行数据投影时所用算法,两种选择’barneshut’, ‘exact’。
- 默认算法使用’barneshut’,特点是当数据样本量很大时,近似最优,运算速度快,占用内存少。
- 'exact’算法优化了原始空间和嵌入空间之间的分布的Kullback-Leibler散度,特点精度高。
’Distance’ — 距离计算方法,多种选择’euclidean’ (default) | ‘seuclidean’ | ‘cityblock’ | ‘chebychev’ | ‘minkowski’ | ‘mahalanobis’ | ‘cosine’ | ‘correlation’ | ‘spearman’ | ‘hamming’ | ‘jaccard’ | function handle
默认基于欧几里得距离,根据实际数据效果选取,哪种效果图好用哪个。常见的有 cosine, Chebychev与 Euclidean,三种距离方式效果图分别为:
更多说明参考MathWork官方https://www.mathworks.com/help/releases/R2019a/stats/tsne.html?container=jshelpbrowser#bvh3rti-4