我想对 64 维空间中表示的数字进行分类,该空间给出 8X8 像素字符图像。每个属性都是 0...16 之间的整数。我有 20 行,每行 64 个值,最后加上一个值来确定类别。该类别之前由 UCI 确定,但我想知道他们如何获得每行的每个特定类别。所以他们说他们使用欧几里得距离来确定类别。
我的问题是如何将欧几里得距离应用于 64 个值?我尝试在一行中使用以下公式(毕达哥拉斯定理)Math.sqrt(Math.pow(x2-x1)+Math.pow(y2-y1)),但结果太大,我不知道它代表什么。例如,对于第一行,我得到 1612,它是 40.15 的平方根
这是我的流程代码:
enter code here
public static void main(String[]args)
{
int row[]= new int[64];
for(int z=0;z<64;z++)
{
row[z]=digits[0][z]; //get the first row and store it
}
double result = 0;
for(int z=0;z<64;z+=2)
{
double distance = Math.pow(row[z]-row[z+1],2);
result = result+distance; //add distance each time
System.out.print(result+", ");
}
}
第一行数字是这样的: 0,0,5,13,9,1,0,0,0,0,13,15,10,15,5,0,0,3,15,2,0,11,8,0,0, 4,12,0,0,8,8,0,0,5,8,0,0,9,8,0,0,4,11,0,1,12,7,0,0,2, 14,5,10,12,0,0,0,0,6,13,10,0,0,0,0
我不确定这是否有意义,但如果有不清楚的地方,请询问。 提前致谢。
最佳答案
My question is how do I apply Euclidean distance to 64 values?
你没有。距离是两个对象之间的度量,每个对象可以有 64 个值,但您需要两个对象。特别地,欧氏距离定义为
dist(x, y) = ||x-y||_2 = sqrt[ SUM_{i=1}^d (x_i - y_i)^2 ]
哪里d
是维度数,x_i
意味着i
x
的第一个维度.
So they say they used Euclidean distance to determine the category.
他们说的不止这些,因为距离本身除了……距离之外并不能定义任何东西。另一方面,类别是一个抽象对象,它可能由某个特征点(质心)定义,然后您分配一个具有最近(就给定距离而言)质心的类别。
关于java - 使用欧几里德距离进行数字分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35370895/