[英]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.