在分析数据时,有时要计算流形上两点之间的测地距离。本着有现成轮子绝对不自己写的观点,发现可以通过以下方式计算流形上任意两点之间的测地距离。
ISOMAP是一种保持测地距离不变的高维空间中低维流形的降维方法。在sklearn包中实现了其功能,并用dist_matrix_属性返回训练数据两两之间的测地距离。
所以可以利用Isomap函数来计算任意两点之间的测地距离。具体示例如下:
import numpy as np
from sklearn.manifold import Isomap
data = np.load("samples_data.npy")
isomap = Isomap(n_components=2,n_neighbors=5,path_method="auto")
data_2d = isomap.fit_transform(X=data)
geo_distance_metrix = isomap.dist_matrix_ # 测地距离矩阵,shape=[n_sample,n_sample]
sklearn.manifold.Isomap的介绍见:https://scikit-learn.org/stable/modules/generated/sklearn.manifold.Isomap.html

本文介绍了如何利用Python的sklearn库中的Isomap算法计算高维数据在低维流形上的测地距离。通过Isomap的fit_transform方法降维后,可以获取到dist_matrix_属性得到的测地距离矩阵,从而方便地计算任意两点间的距离。这种方法对于数据降维和理解数据结构非常有用。
1353

被折叠的 条评论
为什么被折叠?



