【问题标题】:SciPy KDTree distance units?SciPy KDTree距离单位?
【发布时间】:2016-02-17 21:37:28
【问题描述】:

假设我有一个数组,其中第 1 列以英尺为单位,第 2 列以英尺为单位,第 3 列以秒为单位。例如:

x = [50 40 30]

然后我有另一个数组y,具有相同的单位和相同的列数,但有很多行。然后我用 Scipy 把它变成一个 KDTree:

tree = scipy.KDTree(y)

然后查询那棵树:

distance,index = tree.query(x,k=1)

默认情况下,我相信距离是根据欧几里得范数计算出来的。

例如,distance 可能是:

print distance
[34]

这些是什么单位?它们是否还在原来的英尺、英尺和秒?

【问题讨论】:

  • 那么,什么样的单位在这里有意义?与前两列相比,您的第三列是完全不同类型的数量。我真的想不出一种非任意的方式来权衡“时间距离”与“空间距离”。
  • 取点 - 我可能应该在前两列上运行 KDTree,然后根据最后一列找到最接近的点,以便它可以解释。

标签: python scipy dimension kdtree


【解决方案1】:

当测量的单位不能相互转换(例如时间和距离)时,它不会返回任何可解释的单位。它返回sqrt(feet**2 + feet**2 + sec**2),这不是计量单位。这是欧几里得范数,但在这种情况下是在一个抽象空间上。

顺便说一句,这并不是一个真正的 Python 问题。 scipy 只是在操纵你给它的数字并且不知道单位。这更多的是如何解释数学的问题,例如,如果您想将 5' x 5' 的盒子想象成比 6' x 6' 的盒子更接近 7' x 7' 的盒子,因为你碰巧在几秒钟内测量它们,并在几小时后测量第三个盒子。只有您知道您的数据以及构建相似性分数真正重要的特征。在我刚刚给出的情况下,这没有任何意义。如果您根据体型和最佳 100m 时间对短跑运动员的相似度进行排名,那么这可能是有道理的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-20
    • 2021-06-21
    • 2016-08-31
    • 2013-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多