文章目录
- TSNE
- 使用scikit-learn库
- 使用Multicore-TSNE库
- 安装方法
- 基本使用方法
- 采用不同的距离度量
- 其他资料
TSNE
- t-Distributed Stochastic Neighbor Embedding (t-SNE) 是一种高维数据的降维方法,由Laurens van der Maaten和Geoffrey Hinton于2008年提出,通常用于数据可视化。其大致原理是在低维(通常是2D或3D)空间中保留高维空间中的距离关系
使用scikit-learn库
- TSNE的代码实现通常基于scikit-learn库
- 具体参数可参考官网手册:https://scikit-learn.org/stable/modules/generated/sklearn.manifold.TSNE.html
使用Multicore-TSNE库
-
Multicore-TSNE的项目地址:
https://github.com/DmitryUlyanov/Multicore-TSNE -
优点:
- 使用方法与与scikit-learn库基本一致
- 计算速度相对于scikit-learn库可大幅提升
-
缺点:
- 功能相比scikit-learn库大幅减少
- 默认仅实现了基于欧式距离的降维计算
安装方法
- 方法1:直接pip安装
pip install MulticoreTSNE
- 方法2:源码编译安装
git clone https://github.com/DmitryUlyanov/Multicore-TSNE.git
cd Multicore-TSNE/
pip install .
基本使用方法
- Multicore-TSNE库的基本使用方法非常简单,与scikit-learn库基本一致:
from MulticoreTSNE import MulticoreTSNE as TSNEtsne = TSNE(n_jobs=4)
Y = tsne.fit_transform(X)
- 详情可看源码:https://github.com/DmitryUlyanov/Multicore-TSNE/blob/master/MulticoreTSNE/init.py
采用不同的距离度量
- Multicore-TSNE默认仅实现了基于欧式距离的降维计算,然而,很多时候,我们希望采用其他距离度量。幸运的是,根据 https://github.com/DmitryUlyanov/Multicore-TSNE/issues/49 中的回答,已有大佬基于Multicore-TSNE库进行了二次开发,其中可以采用的距离度量包括:
- Euclidean distance
- Squared euclidean distance
- Angular distance
- Cosine distance (not a real metric)
- Precomputed distance marix
- 安装方式:源码编译安装
git clone https://github.com/asanakoy/Multicore-TSNE.git
cd Multicore-TSNE/
pip install .
- 以手动计算特征向量之间的余弦距离为例:
from MulticoreTSNE import MulticoreTSNE as TSNE
from sklearn.metrics.pairwise import cosine_similarity# 计算余弦相似度矩阵
similarity_matrix = cosine_similarity(feats.cpu().numpy())# 将余弦相似度转换为距离矩阵
distance_matrix = 1 - similarity_matrixtsne = TSNE(n_jobs=4, metric="precomputed", random_state=42)
X_tsne = tsne.fit_transform(distance_matrix)
其他资料
- Multicore-TSNE 项目常见问题解决方案
- 用 GPU 加速 TSNE:从几小时到几秒