2列行之间的Hausdorff距离

马梅德

给定一个数据框:

df = 

    car     lat    lon
0   0   22.0397 3.6531
1   1   22.0367 3.5095
2   2   22.0713 3.5346
3   3   22.1249 3.5922

我已经计算出欧几里得距离来得到矩阵:

from scipy.spatial.distance import squareform, pdist

pd.DataFrame(squareform(pdist(df.iloc[:, 1:])), columns=df1.car.unique(), index=df1.car.unique())

现在,我想获取Hausdorff距离并获取矩阵。


我试过了:

def hausdorff(p, q):
    p = p #Need to choose row
    q = q #Need to choose row
    return hausdorff_distance(p, q, distance="euclidean")

distance_df = squareform(pdist(df1.values, hausdorff))
euclidean = pd.DataFrame(distance_df)
斯蒂夫

无需选择行,这pdist对您来说就是如此。它为所有行组合调用用户提供的函数。因此,只需将行向量提供给即可hausdorff唯一的警告是hausdorff_distance期望将两个二维数组作为输入,因此您需要调整它们的形状。

def hausdorff(p, q):
    p = p.reshape(-1,2)
    q = q.reshape(-1,2)
    return hausdorff_distance(p, q, distance="euclidean")

pd.DataFrame(squareform(pdist(df.iloc[:, 1:], hausdorff)), columns=df.car.unique(), index=df.car.unique())

结果:

          0         1         2         3
0  0.000000  0.143631  0.122641  0.104728
1  0.143631  0.000000  0.042745  0.120907
2  0.122641  0.042745  0.000000  0.078681
3  0.104728  0.120907  0.078681  0.000000


以上只是回答了如何将用户定义函数与一起使用的技术问题 pdist 根据您要实现的目标,我想您需要提供的数组不止一行,例如,给定汽车的所有行,如以下示例所示:

import itertools as it

df1 = pd.DataFrame({'car': [0,0,1,1,2,2], 'lat': 22+pd.np.random.rand(6), 'lon': 3+pd.np.random.rand(6)})
#   car        lat       lon
#0    0  22.426797  3.006383
#1    0  22.894152  3.558360
#2    1  22.657756  3.969983
#3    1  22.788719  3.969007
#4    2  22.025103  3.854048
#5    2  22.867389  3.760920

cars = df1.car.unique()
p = []
for c in it.combinations(cars, 2):
    p.append(hausdorff_distance( df1.loc[df1.car==c[0],['lat','lon']].to_numpy(), df1.loc[df1.car==c[1],['lat','lon']].to_numpy()))
pd.DataFrame(squareform(p), columns=cars, index=cars)

结果:

          0         1         2
0  0.000000  0.990892  0.917975
1  0.990892  0.000000  0.643188
2  0.917975  0.643188  0.000000

但是请注意,Hausdorff距离是有向距离,即h(x,y)!= h(y,x)。hausdorff_distance计算h(x,y)和h(y,x)的最大值,因此您无法从中填充距离矩阵。您可以directed_hausdorff用来正确创建距离矩阵。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

计算列表中所有数据框之间的 Hausdorff 距离

来自分类Dev

熊猫-列之间的欧式距离

来自分类Dev

Hausdorff距离结果在Meshlab中的含义

来自分类Dev

2个坐标之间的距离

来自分类Dev

2 gps点之间的距离

来自分类Dev

计算矩阵行之间的余弦距离

来自分类Dev

PHP MySQL如何计算行之间的距离?

来自分类Dev

按组计算连续行之间的距离

来自分类Dev

测量数据框行之间的距离

来自分类Dev

2个熊猫df列之间的cosine_similarity以获取余弦距离

来自分类Dev

以最快的方式处理大型数据集的Hausdorff距离

来自分类Dev

如何在 MeshLab 中显示 Hausdorff 距离的热图?

来自分类Dev

如何使用形状距离和通用接口在Opencv中查找Hausdorff距离?

来自分类Dev

如何使用形状距离和通用接口在Opencv中查找Hausdorff距离?

来自分类Dev

使用CUDA计算矩阵对应行之间的欧几里得距离

来自分类Dev

使用熊猫更快地计算行之间的相似度/距离

来自分类Dev

R中13个行索引之间的欧式距离置换

来自分类Dev

如何更改棒棒糖上的行之间的距离

来自分类Dev

查询以查找PostgreSQL中连续行的几何之间的距离

来自分类Dev

查找两个矩阵的行之间的最小距离

来自分类Dev

查找大型矩阵的行之间的最小距离:分配限制错误

来自分类Dev

每个客户的连续行之间的半正弦距离

来自分类Dev

使用CLLocationCoordinate2D在2点之间的距离

来自分类Dev

如何增加HTML中表格列之间的距离?

来自分类Dev

如何计算两列之间的距离并绘制熊猫图

来自分类Dev

在观星台上包含注释会扭曲列之间的距离

来自分类Dev

Python Pandas 距离和工作日列之间的关系

来自分类Dev

OpenLayers 3:如何计算2点之间的距离?

来自分类Dev

2个样本之间的Kullback-Leibler距离

Related 相关文章

  1. 1

    计算列表中所有数据框之间的 Hausdorff 距离

  2. 2

    熊猫-列之间的欧式距离

  3. 3

    Hausdorff距离结果在Meshlab中的含义

  4. 4

    2个坐标之间的距离

  5. 5

    2 gps点之间的距离

  6. 6

    计算矩阵行之间的余弦距离

  7. 7

    PHP MySQL如何计算行之间的距离?

  8. 8

    按组计算连续行之间的距离

  9. 9

    测量数据框行之间的距离

  10. 10

    2个熊猫df列之间的cosine_similarity以获取余弦距离

  11. 11

    以最快的方式处理大型数据集的Hausdorff距离

  12. 12

    如何在 MeshLab 中显示 Hausdorff 距离的热图?

  13. 13

    如何使用形状距离和通用接口在Opencv中查找Hausdorff距离?

  14. 14

    如何使用形状距离和通用接口在Opencv中查找Hausdorff距离?

  15. 15

    使用CUDA计算矩阵对应行之间的欧几里得距离

  16. 16

    使用熊猫更快地计算行之间的相似度/距离

  17. 17

    R中13个行索引之间的欧式距离置换

  18. 18

    如何更改棒棒糖上的行之间的距离

  19. 19

    查询以查找PostgreSQL中连续行的几何之间的距离

  20. 20

    查找两个矩阵的行之间的最小距离

  21. 21

    查找大型矩阵的行之间的最小距离:分配限制错误

  22. 22

    每个客户的连续行之间的半正弦距离

  23. 23

    使用CLLocationCoordinate2D在2点之间的距离

  24. 24

    如何增加HTML中表格列之间的距离?

  25. 25

    如何计算两列之间的距离并绘制熊猫图

  26. 26

    在观星台上包含注释会扭曲列之间的距离

  27. 27

    Python Pandas 距离和工作日列之间的关系

  28. 28

    OpenLayers 3:如何计算2点之间的距离?

  29. 29

    2个样本之间的Kullback-Leibler距离

热门标签

归档