【发布时间】:2019-08-31 00:32:51
【问题描述】:
我有一个由 >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 来实现它
这可以创建吗?
【问题讨论】:
-
你对你写的距离公式有多大把握?一个明显的问题是,在正常计算中,您的权重加起来为 2,但在此示例中,您的权重加起来仅为 1。因此,即使 x1-x2 和 y1-y2 具有相同的距离,您的公式也会产生完全不同的答案比未加权的情况。
-
大多数参考资料说这是计算加权距离矩阵的最佳方法,请参阅math.stackexchange.com/questions/917066/…
标签: pandas