文章目录
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安装
bash
pip install MulticoreTSNE
- 方法2:源码编译安装
bash
git clone https://github.com/DmitryUlyanov/Multicore-TSNE.git
cd Multicore-TSNE/
pip install .
基本使用方法
- Multicore-TSNE库的基本使用方法非常简单,与scikit-learn库基本一致:
python3
from MulticoreTSNE import MulticoreTSNE as TSNE
tsne = TSNE(n_jobs=4)
Y = tsne.fit_transform(X)
采用不同的距离度量
- 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
- 安装方式:源码编译安装
bash
git clone https://github.com/asanakoy/Multicore-TSNE.git
cd Multicore-TSNE/
pip install .
- 以手动计算特征向量之间的余弦距离为例:
python3
from MulticoreTSNE import MulticoreTSNE as TSNE
from sklearn.metrics.pairwise import cosine_similarity
# 计算余弦相似度矩阵
similarity_matrix = cosine_similarity(feats.cpu().numpy())
# 将余弦相似度转换为距离矩阵
distance_matrix = 1 - similarity_matrix
tsne = TSNE(n_jobs=4, metric="precomputed", random_state=42)
X_tsne = tsne.fit_transform(distance_matrix)