【问题标题】:digit categorisation using Euclidean distance使用欧几里得距离进行数字分类
【发布时间】:2016-05-24 02:12:52
【问题描述】:

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

我不确定这是否有意义,但如果有不清楚的地方请询问。 提前致谢。

【问题讨论】:

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


【解决方案1】:

我的问题是如何将欧几里得距离应用于 64 个值?

你没有。距离是两个对象之间的度量,每个对象可以有 64 个值,但您需要两个对象。特别是,欧几里得距离定义为

dist(x, y) = ||x-y||_2 = sqrt[ SUM_{i=1}^d (x_i - y_i)^2 ]

其中d 是维数,x_i 表示xith 维数。

所以他们说他们使用欧几里得距离来确定类别。

他们说的不止这些,因为距离本身并没有定义任何东西......距离。另一方面,类别是一个抽象对象,它可能由某个特征点(质心)定义,然后您分配一个具有最近(就给定距离而言)质心的类别。

【讨论】:

  • 好的,但是 "SUM_{i=1}^d" 这代表什么?正如你所说,d 是维度,但 i=1 是什么?
  • 这意味着从 i 等于 1 到 d 的总和,因此在 java 中是 for (int i=0; i&lt;d; ++i)
  • 好的,我明白了。我之前尝试过第一行和第十行,我得到了 23.7。这个数字是多少,如何从中获取类别?
  • 正如我所说 - 你没有。这只是两点之间的距离。这没有对任何东西进行分类。您需要一些基于距离的分类方法。除了“两个物体有多么不同”之外,距离本身没有任何意义
猜你喜欢
  • 2013-03-02
  • 2017-07-07
  • 2019-11-23
  • 2015-07-15
  • 2014-02-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多