斯坦福cs231n课程记录——assignment1 KNN

目录

  • 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

详情:

参考0

参考1

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)

输出:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值