目录
- KNN原理
- 某些API解释
- KNN实现
- 作业问题记录
- 行业运用
- 算法改进
- 参考文献
一、KNN原理
KNN是一种投票机制,依赖少数服从多数的原则,根据最近样本的标签进行分类的方法,属于局部近似。
优点:
1.简单(原因在于几乎不存在训练,测试时直接计算);
2.适用于样本无法一次性拿到的情况;
3.KNN是根据周围邻近样本的标签进行分类的,所以适合于样本类别交叉或重叠较多的情况;
缺点:
1.测试时间太长,需要计算所有样本与测试样本的距离,因此需要提前去除对分类结果影响不大的样本;
2.不存在概率评分,仅根据样本标签判别;
3.当不同类别的样本数目差异较大时,数目较大的那一类别对KNN判别结果影响较大,因此可能产生误判;
4.无法解决高维问题
二 .某些API解释
1. plt.rcParams
作用:设置matplotlib的配置参数
例子:
%matplotlib inline
plt.rcParams['figure.figsize'] = (10.0, 8.0) # set default size of plots
plt.rcParams['image.interpolation'] = 'nearest'
plt.rcParams['image.cmap'] = 'gray'
2. auto_reload
作用:在调试的过程中,如果代码发生更新,实现ipython中引用的模块也能自动更新。
例子:
%load_ext autoreload
%autoreload 2
详情:
3. np.flatnonzero()
作用:矩阵扁平化后返回非零元素的位置
例子:
import numpy as np
x = np.arange(-2,3)
print x
y = np.flatnonzero(x)
print y
结果:
[-2 -1 0 1 2]
[0 1 3 4]
np.flatnonzero(y_train == y)
作用:找出标签中y类的位置
例子:
z = np.flatnonzero(x == -1)
print z
结果:
[1]
4. np.random.choice
原型:numpy.random.choice(a, size=None, replace=True, p=None)
作用:随机选取a中的值
详解:
参数 | 参数意义 |
---|---|
a | 为一维数组或者int数据; |
size | 为生成的数组维度; |
replace | 是否原地替换; |
p | 为样本出现的概率; |
例子:
print(np.random.choice(7,4)) #[0 6 4 6]
解释:在0-7之间随机选取4个数。等同于np.random.randint(0,7,4)
print(np.random.choice(7,4,p=[0,0.1,0.3,0.2,0,0.2,0.2]))
解释:p中的值对应a中每个值的概率。
5.reshape中-1
作用:自动计算数组列数或行数
# Reshape the image data into rows
X_train = np.reshape(X_train, (X_train.shape[0], -1))
X_test = np.reshape(X_test, (X_test.shape[0], -1))
print(X_train.shape, X_test.shape)
输出: