一、KNN原理
全称K-最近邻算法,找到最近的k个邻居,在选取到的k个样本中选取出最近的且占比最高的类别作为预测类别,因此可以看做一种投票机制,依赖少数服从多数的原则,属于局部近似。
优点:1、简单训练快;
2、据周围邻近样本的标签进行分类的,所以适合于样本类别交叉或重叠较多的情况;
3、对异常值不敏感;
缺点:1、计算量大预测慢;
2、无法解决高维问题;
3、当不同类别的样本数目差异较大时,数目较大的那一类别对KNN判别结果影响较大,因此可能产生误判;
4、不存在概率评分,仅根据样本标签判别;
二、k-Nearest Neighbor (kNN) exercise
1、kNN分类器的两个阶段
- 在训练期间,分类器获取训练数据并简单地记住它
- 在测试期间,kNN通过与所有训练图像进行比较并转移k个最相似训练样本的标签来对每个测试图像进行分类
- k值是交叉验证的
2、 数据集下载
cd /assignment1/cs231n/datasets
# 自动下载
!bash get_datasets.sh
# 手动下载
wget http://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz -O cifar-10-python.tar.gz
tar -xzvf cifar-10-python.tar.gz
rm cifar-10-python.tar.gz
wget http://cs231n.stanford.edu/imagenet_val_25.npz
3、Setup code
ipynb文件配置matplotlib参数
%matplotlib inline
plt.rcParams['figure.figsize'] = (10.0, 8.0) # set default size of plots
plt.rcParams['image.interpolation'] = 'nearest'
plt.rcParams[&