2020年11月16日 / 20次阅读 / 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范数(欧式距离)。
下图是运行结果:
结果领人惊讶,K的最佳取值出奇地小。
3和4都没有到10个分类的一半!
而且,我们还能观察到,K值越大,预测效果越差。上图的两条曲线,呈现出单边下降的态势。
-- EOF --
本文链接:https://www.pynote.net/archives/2798
前一篇:学习 bit depth
后一篇:霍夫曼(Huffman)压缩编码算法
Ctrl+D 收藏本页
©Copyright 麦新杰 Since 2019 Python笔记