在MNIST和FMNIST数据集上测试KNN算法

2020年11月16日 / 5次阅读 / Last Modified 2020年11月23日
算法

写了一段代码,测试KNN算法在MNIST和FMNIST上的效果。我主要是想知道,对于这两个有10个分类的数据集,K的最佳取值是多少。

代码地址:https://github.com/xinlin-z/teapot/blob/master/0032_knn3_test_diff_K.py

这段代码计算K从1到500时,每一个K的取值,在两个数据集上得到的预测正确率。代码经过一定程度的优化,但还是需要运行一小会儿,主要开销是在计算每一个待预测点与训练集内60000个点的L2范数(欧式距离)。

下图是运行结果:

在MNIST和FMNIST数据集上的测试KNN算法
在MNIST和FMNIST数据集上的测试KNN算法

结果领人惊讶,K的最佳取值出奇地小。

  • K=3时,在MNIST数据集上取得最佳预测效果,此时正确率为9717
  • K=4时,在FMNIST数据集上取得最佳预测效果,此时正确率为8596

3和4都没有到10个分类的一半!

而且,我们还能观察到,K值越大,预测效果越差。上图的两条曲线,呈现出单边下降的态势。

-- EOF --

本文链接:https://www.pynote.net/archives/2798

留言区

电子邮件地址不会被公开。 必填项已用*标注


前一篇:
后一篇:

More


©Copyright 麦新杰 Since 2019 Python笔记

go to top