我正在构建一些2D数据的分类器。
我有一些训练数据,我知道这些数据,并将它们绘制在图表上以查看聚类。
对于观察者来说,有明显的,独立的聚类,但不幸的是它们分布在线上而不是紧密的簇中。一条线的扩展角度大约为80度,另一条线宽度大约为45度,另一条线距离水平方向大约10度,但这三个线条似乎都指向原点。
我想对某些测试数据执行最近邻分类,并且根据事物的外观,如果测试数据与训练数据非常相似,则3最近邻分类器将正常工作,除非数据接近图的原点,在这种情况下,三个簇非常接近,可能会有一些错误。
我是否应该为我的群集提出一些估计的高斯分布?如果是这样,我不确定如何将它与最近邻分类器结合起来?
感激任何意见。
干杯
答案 0 :(得分:0)
将所有点转换为[r,angle],并将r缩小到0到90的范围,在运行最近邻居之前。
为什么? NN使用点和中心之间的欧几里德距离(在大多数实现中),
但是你希望distance( point, centre )
更像
sqrt((point.r - centre.r)^ 2 +(point.angle - centre.angle)^ 2)
比sqrt((point.x - centre.x)^ 2 +(point.y - centre.y)^ 2)。
将r缩小到30? 10?比r更重角度,这似乎是你想要的。
答案 1 :(得分:0)
为什么要将k-NN用于此目的?任何线性分类器都可以解决问题。尝试用SVM解决它,你会得到更好的结果。 如果你坚持使用kNN,你必须缩放这些特征并将其转换为极性特征,如下所述。