我已经设置了大约 200 个点 (x,y) 的图像。这 200 个数据属于 11 个类(我认为这将成为类标签)。我的问题是如何将 x、y 值表示为一个数据?
我的第一个想法是我应该用标签分别表示它们,然后当我得到分类点时,我将分别对 x 和 y 进行分类。我内心的某些东西告诉我这是不正确的。
请建议我如何将 x,y 值表示为一个数据元素。
我无法想象你遇到了什么问题。在kNN算法中,我们可以使用多维变量,你只需要list
在python标准库或array
Numpy库中使用来组织数据,例如: 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))
and distance(group-point)
(距离是我写的一个函数)来计算距离而无需迭代。
关键不是表示,而是距离计算。您的案例中的点本质上是一个元素,但有两个维度 (x, y)
。kNN 算法本身可以处理 n 维情况:它找到 k 近邻。d((x1, y1), (x2, y2))=((x1-x2)^2 + (y1-y2)^2)^0.5
因此,您可以使用(x1, y1)
代表要计算的第一个点的欧几里得距离作为您案例中点的距离。