You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从UMAP、t-SNE算法中计算得到连通性邻接矩阵

如何从UMAP和t-SNE中获取连通性邻接矩阵

UMAP获取连通性邻接矩阵

UMAP在拟合数据的计算过程中会生成高维空间的模糊近邻图,可直接通过模型的graph_属性提取,输出格式和scipy输出的kneighbors_graph完全一致。
代码示例:

import umap
import pandas as pd
import numpy as np

ids = df.index
# 初始化UMAP模型,近邻数、距离度量参数可和之前KNN计算逻辑保持一致
umap_embedder = umap.UMAP(n_neighbors=n_neighbors, metric=metric)
# 拟合输入数据
umap_embedder.fit(df.values)

# 获取连通性邻接矩阵
umap_graph = umap_embedder.graph_
# 如需和KNN输出一致的严格0/1二值矩阵,将所有非0值设为1
umap_graph.data = np.ones_like(umap_graph.data)
# 转成DataFrame格式
umap_knn_df = pd.DataFrame(umap_graph.toarray(), columns=ids, index=ids)

*如果需要基于UMAP降维后低维空间的邻接矩阵,可对UMAP输出的低维嵌入结果调用scipy的kneighbors_graph计算即可,逻辑和原始高维空间计算KNN邻接矩阵一致。

t-SNE获取连通性邻接矩阵

t-SNE本身没有内置的邻接矩阵输出接口,可根据需求选择两种实现方式:

  • 若需要基于t-SNE降维后低维空间的连通性邻接矩阵,直接对t-SNE输出的低维嵌入结果调用kneighbors_graph计算即可,代码示例:
from sklearn.manifold import TSNE
from sklearn.neighbors import kneighbors_graph
import pandas as pd

ids = df.index
# 拟合t-SNE得到低维嵌入结果
tsne_embed = TSNE(n_components=2, metric=metric).fit_transform(df.values)
# 基于低维嵌入计算KNN连通性邻接矩阵
tsne_knn = kneighbors_graph(tsne_embed, n_neighbors=n_neighbors, metric=metric, mode='connectivity').toarray()
tsne_knn_df = pd.DataFrame(tsne_knn, columns=ids, index=ids)
  • 若需要t-SNE计算过程中用到的高维空间相似性对应的邻接矩阵,可手动计算高维空间的近邻关系,二值化后得到连通性矩阵即可。

内容的提问来源于stack exchange,提问作者Astra Uvarova - Saturn's star

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 16:24:01