【问题标题】:K Nearest Neighbor classifierK 最近邻分类器
【发布时间】:2018-06-21 09:18:20
【问题描述】:

我已经设置了大约 200 个点 (x,y) 的图像。 200 个数据属于 11 个类(我认为这将成为类标签)。我的问题是如何将 x、y 值表示为一个数据?

我的第一个想法是我应该用标签分别表示它们,然后当我得到分类点时,我将分别对 x 和 y 进行分类。我内心的某些东西告诉我这是不正确的。

请告诉我如何将 x,y 值表示为一个数据元素。

【问题讨论】:

  • 更好地解释点是什么以及标签是什么。举个例子。
  • 点是 (x,y) 坐标平面。

标签: opencv knn


【解决方案1】:

我无法想象你遇到了什么问题。在kNN算法中,我们可以使用多维变量,你只需要使用python标准库中的list或Numpy库中的array来组织数据如:group = numpy.array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])group = [[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]] 表示 (1.0,1.1) (1.0,1.0) (0,0) (0,0.1)。
不过,我建议使用numpy,因为它里面有很多函数,而且它们是用C语言实现的,保证了程序的效率。
如果你用numpy,最好用矩阵的方式来做所有的操作,比如你可以用point=tile([0,0],(3,1))distance(group-point)(距离是我写的一个函数)不用迭代计算距离。

【讨论】:

    【解决方案2】:

    关键不是表示,而是距离计算。您的案例中的要点本质上是一个元素,但有两个维度 (x, y)。 kNN 算法本身可以处理 n 维情况:它找到 k 近邻。因此,您可以使用欧几里得距离d((x1, y1), (x2, y2))=((x1-x2)^2 + (y1-y2)^2)^0.5,其中(x1, y1) 表示要计算的第一个点,作为您案例中点的距离。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-30
      • 1970-01-01
      • 2011-06-23
      • 1970-01-01
      • 1970-01-01
      • 2019-01-03
      • 2018-05-09
      • 2014-04-12
      相关资源
      最近更新 更多