当前位置: 首页 > 知识库问答 >
问题:

两个物体之间的欧几里得距离

史谦
2023-03-14

首先,我知道欧几里得距离是什么,以及它在两个向量之间做什么或计算什么。

但我的问题是如何计算两个类对象之间的距离,例如在Java或任何其他OOP语言中。我读了很多关于机器学习的东西,已经使用库等编写了分类器。但我想知道,当我有例如以下对象时,如何计算欧几里德距离:

class Object{
    String name;
    Color color;
    int price;
    int anotherProperty;
    double something;
    List<AnotherObject> another;
}

我已经知道的是(如果我没有错!)我必须将此对象转换为表示属性或“特征”的(n)个向量/数组(在机器学习中称为?)

但我该怎么做呢?这正是我需要进一步理解的一个谜团。

我是否必须收集属性的所有可能值才能将其转换为数字并将其写入数组/向量中?

示例:

根据计算所需的“特征”,我猜上述对象将由一个6维或更小的数组表示。假设颜色、名称和价格是数组/向量基于以下数据的必要特征:

  • 颜色:绿色(假设一个枚举有5个可能的值,其中绿色是第三个值)

看起来像这样吗?

[3,324,14]

如果我对同一类的每个物体都这样做,我就能计算出欧几里德距离。我是对的还是误解了什么,还是完全错了?

共有2个答案

龚招
2023-03-14

把这个问题想象成一个统计问题。将所有属性分类为标称、序数和比例变量。一旦你做到了这一点,这就是一个多维距离向量问题。

那宏大
2023-03-14

对于每种数据类型,您需要选择适当的方法来确定距离。在许多情况下,每种数据类型本身也可能必须被视为一个向量。

例如,对于颜色,可以将颜色表示为RGB值,然后取欧几里得距离(取3个差值,求平方,求和,然后求平方根)。您可能希望选择不同于RGB的颜色空间(例如HSI)。请参见此处:色差。

比较两个字符串更容易:一种常见的方法是Levenshtein距离。Apache公共StringUtils类中有一个html" target="_blank">方法。

数字-只需考虑差异。

每种类型都需要考虑直接生成距离或计算数值的最佳方法,然后将数值减去以得到“距离”。

一旦你有了每个对象的所有字段的所有“值”的向量,你就可以计算欧几里得距离(平方差异,总和和平方根总和)。

在您的情况下,如果您有:

object 1: [3,324,14]
object 2: [5,123,10]

欧几里得距离是:

sqrt( (3-5)^2 + (324-123)^2 + (14-10)^2 )

但在比较字符串的情况下,Levenshtein算法直接给出距离,而不需要字段的中间数字。

 类似资料:
  • 问题内容: 我有两个 x - y 坐标数组,我想找到一个数组中 每个 点与另一个数组中 所有 点之间的最小欧几里得距离。数组的大小不一定相同。例如: 我当前的方法遍历每个坐标,并计算该坐标与其他坐标之间的距离。 有没有一种方法可以消除for循环,并以某种方式在两个数组之间进行逐元素计算?我设想生成一个距离矩阵,为此我可以找到每一行或每一列中的最小元素。 看问题的另一种方法。假设我将(length

  • 我试图将X Y Z变量的数组或列表传递给计算欧几里德距离的方法。 这是我的方法: 这是我的主要代码: 输出为:1.7782794。。应该是10的时候。有什么想法吗?

  • 返回两点之间的欧氏距离。 使用 Math.hypot() 计算两点之间的欧氏距离( Euclidean distance)。 const distance = (x0, y0, x1, y1) => Math.hypot(x1 - x0, y1 - y0); distance(1, 1, 2, 3); // 2.23606797749979

  • 我想写一个函数来计算中的坐标与中的每个坐标之间的欧氏距离,并通过列生成维度行的距离数组(其中是中的坐标数,是中的坐标数)。 NB:为了简单起见,我不想使用任何其他库。 运行该函数将生成: 我一直在试着运行下面的程序 但我得到以下错误: 非常感谢。

  • 问题内容: 我需要测量以字符串形式提供名称的两个地方之间的物理距离。由于有时名称的书写方式略有不同,因此我一直在寻找一个可以帮助我测量差异的库,然后将其与纬度和经度结合起来以选择正确的匹配项。首选语言:Java或PHP。 有什么建议? 问题答案: 看看Levenshtein距离。这是一种测量两个字符串彼此之间有多不同的方法。 希望我能正确理解你的问题;在与“经度”相同的句子中使用“距离”可能会造成

  • 问题内容: 我在3D中有两点: 我想计算距离: 使用NumPy或一般使用Python的最佳方法是什么?我有: 问题答案: 用途 背后的理论:如数据挖掘导论所述 之所以有效,是因为欧几里得距离为l2范数,并且 中ord参数的默认值为2。