繁体   English   中英

如何计算 Python 中矩阵中所有对象之间的成对距离

[英]How to calculate pairwise distances among all subjects in a matrix in Python

我有一个特征矩阵,其中主题在行中,特征在列中。 我想计算所有主题(行)之间的成对距离(例如平均绝对距离)。 什么是最简单和最快的方法?

让特征是一个大小为 (100, 200) 的矩阵。

features = pd.DataFrame(np.random.uniform(0, 1, (100,200)))

期望的输出:

  • 距离数据框:类似于下图

    subject1 subject2 distance 0 1 0.124 0 2 0.453...
  • 邻接矩阵:我的最终目的是根据计算的距离创建邻接矩阵。

我不确定这是否正是您想要的,但想发布,因为我认为部分将用于解决方案,

我使用来自sklearn的 pairwise_distance,然后 熔化将 output 塑造成您想要的格式,所以

import pandas as pd
from sklearn.metrics import pairwise_distances

features = pd.DataFrame(np.random.uniform(0, 1, (100,200)))

并创建距离

distances = pd.DataFrame( pairwise_distances(features) )
distances['subject'] = distances.index

distances.melt(id_vars=['subject'])

哪个会回来

      subject variable     value
0           0        0  0.000000
1           1        0  5.479917
2           2        0  5.696208
3           3        0  5.889866
4           4        0  5.851760
...       ...      ...       ...
9995       95       99  5.571289
9996       96       99  5.588377
9997       97       99  5.794598
9998       98       99  6.021844
9999       99       99  0.000000

重复/零仍然是其中的一部分,它是整个 sjabang!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM