java - 使用欧几里德距离进行数字分类

标签 java machine-learning artificial-intelligence euclidean-distance categorization

我想对 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/

相关文章:

java - kotlin 中此 XML 响应的 POJO 对象

java - 在 RAM 中存储数据

python - tensorflow 中的 apply_gradients() 函数不会更新权重和偏差变量

machine-learning - 异常值检测的验证是什么?

php - 识别声音是男性还是女性

machine-learning - 策略梯度方法和基于神经网络的 Action 值方法有什么区别?

java - 授权 Flash Client 到 Java Server 连接

java - 如何解码Java字符串中的unicode char?

machine-learning - 从中文文档中提取数据

machine-learning - 机智.ai : how does it identify intent and classifies entities from user expressions