使用自己的计算熊猫创建距离矩阵



我有一个由>50 个维度组成的数据帧。

使用欧几里得距离,我可以计算距离矩阵:

import pandas as pd
df2=pd.DataFrame({'col1':[1,2,3,4],'col2':[5,6,7,8]})
df2
from scipy.spatial import distance_matrix
dm=pd.DataFrame(distance_matrix(df2.values, df2.values), index=df2.index, columns=df2.index)
dm

我想更加强调col1,所以想使用以下公式:

sqrt(w1(x1-x2)^2 + w2(y1-y2)^2), w1=0.7, w2=0.3

通读文档,我找不到实现此更改的方法。我对 python 还比较陌生,所以想知道如何使用 pandas 实现这一点

这是可以创建的吗?

您可以使用pdist并提供自己的指标公式:

w = (0.7, 0.3)
pd.DataFrame(squareform(pdist(df2.values, lambda u, v: np.sqrt((w*(u-v)**2).sum()))), index=df2.index, columns=df2.index)

最新更新