首先,我知道欧几里得距离是什么以及它在计算两个向量之间的距离时所起的作用。
但我的问题是关于如何计算两个类对象之间的距离,例如在Java或任何其他面向对象编程语言中。我已经阅读了很多关于机器学习的资料,使用库编写了分类器等,但我想知道当我有这样一个对象时如何计算欧几里得距离:
class Object{
String name;
Color color;
int price;
int anotherProperty;
double something;
List<AnotherObject> another;
}
我已经了解到的是,我需要将这个对象转换为一个表示属性或“特征”(在机器学习中称为)的向量/数组。但是我该怎么做呢?这只是我需要理解更多的拼图中的一部分。
我是否需要收集属性的所有可能值并将其转换为数字,然后将其写入数组/向量中?
例如:上面的对象将基于以下数据的颜色、名称和价格作为必要特征来计算,可能会被表示为一个6维数组或更小的数组/向量。
- color: 绿色(假设枚举有5种可能的值,绿色是第三种)
- name: "foo" (我不知道如何转换这个值,也许使用ascii码的加法?)
- price: 14 (只需取整数?)
[3,324,14]
如果我对同一类的每个对象执行此操作,那么我就能够计算欧几里德距离。我是否正确或者是否有什么误解,或者完全错误?