我有一个由> 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实现它
这有可能创建吗?
答案 0 :(得分:1)
您可以使用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)