K最近邻分类器

时间:2013-06-06 03:27:38

标签: opencv knn

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

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

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

2 个答案:

答案 0 :(得分:0)

我无法想象你遇到了什么问题。在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)(距离是我写的函数)来计算没有迭代的距离

答案 1 :(得分:0)

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