[英]python dataframe matrix of Euclidean distance
我想创建一个自定义的k最近邻居方法。
为此,我需要一个矩阵(x:y),该矩阵返回给定函数(例如,基于我的数据集的7个项的欧几里得)的x和y每种组合的距离。
例如
data:
x1 x2 x3
row 1: 1 2 3
row 2: 1 1 1
row 3: 4 2 3
如果我选择x1和x2以及euclidean,那么输出应该是3x3输出
1:1=0
1:2 =sqrt((1-1)^2+(2-1)^2)=1
1:3 =sqrt((1-4)^2+(2-2)^2)=sqrt(3)
2:1=1:2=1
2:2=0
2:3=sqrt((1-4)^2+(1-2)^2)=2
3:3=0
等等...
如何编写而不迭代数据帧?
预先感谢您的支持。
您可以使用scipy.spatial.distance.pdist
和scipy.spatial.distance.squareform
:
from scipy.spatial.distance import pdist, squareform
dist = pdist(df[['x1', 'x2']], 'euclidean')
df_dist = pd.DataFrame(squareform(dist))
如果你只是想一个数组作为输出,而不是一个数据帧,只使用squareform
本身,而无需在数据帧加以包装。
结果输出(作为DataFrame):
0 1 2
0 0.0 1.000000 3.000000
1 1.0 0.000000 3.162278
2 3.0 3.162278 0.000000
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.