2012-04-16 64 views
2

我在matlab中应用了KNN算法对手写数字进行分类。这些数字最初是8 * 8的矢量格式,并被拉伸形成矢量1 * 64。所以每次我将第一个数字与其余所有数据集(这是相当大的数据集)进行比较,然后第二个数字集与剩下的集合等等等现在我的问题是,不是1邻居是最佳选择总是?由于我使用欧几里德距离(我选择了一个更接近的距离),为什么我应该选择2或3个邻居呢?邻居数KNN算法

谢谢

+0

比方说,你有被误写成,看起来酷似1你现在检查一个7。你得到错误的结果。现在,在5个最佳比赛中,有多少比7更多? – svinja 2012-04-16 14:13:28

+0

男士是否正常获得90.21%的成功?在1593位数据集? – 2012-04-16 19:57:23

+0

@TestTest我不是图像识别方面的专家,我通常将ML用于其他目的,但90.2%对我来说听起来相当不错。 – amit 2012-04-16 20:03:53

回答

1

你必须考虑噪音。假设你的一些分类实例可能被错误地分类,或者其中一个与其他例子非常接近 - 这是不同的,但实际上它只是一个“小故障”。在这些情况下 - 根据这种情况进行分类可能会导致错误。

从个人经验来看,通常是对于k = 3/5/7来说取得了最好的结果,但它是依赖于实例的。

如果您想要获得最佳性能 - 您应该使用cross validation top为您的特定实例选择最佳k

而且,通常只使用奇数作为k的KNN,避免“画”

+0

家伙是否正常获得90.21%的成功?在1593位数据集? – 2012-04-16 19:57:31