CS231n 笔记一(lecture 2)(KNN、线性分类)

来源:互联网 发布:天下足球 知乎 编辑:程序博客网 时间:2024/04/26 03:37

1、数据驱动:

        从理论上讲,只要有足够代表性的样本(数据),就可以运用数学找到一个或者一组模型的组合使得它和真实的情况非常接近。注意这个方法的前提是具有「足够代表性的数据」。这种方法称为「数据驱动方法」。之所以被称为数据驱动方法是因为它是现有大量的数据,而不是预设模型,然后用很多简单的模型来契合数据(Fit Data)。虽然通过这种方法找到的模型可能和真实模型存在一定的偏差,但是在误差允许的范围内,单从结果上和精确的模型是等效的。

2、L1距离(曼哈顿距离

曼哈顿距离——两点在南北方向上的距离加上在东西方向上的距离,即d(i,j)=|xi-xj|+|yi-yj|


3、L2距离(欧式距离

指在m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。在二维和三维空间中的欧氏距离就是两点之间的实际距离

绿色线:欧式距离    其他线:曼哈顿距离

4、Nearest Neighbor classifier 

import numpy as npclass NearestNeighbor:def __init__(self):passdef train(self,X,y):#最邻近分类器就是简单的记住所有的训练数据        self.Xtr = Xself.ytr = ydef predict(self,X):num_test = X.shape[0]#确保输出的type和输入的相同Ypred = np.zeros(num_test,dtype=self.ytr.dtype)#遍历整个测试集rows,找到训练集中和测试集距离最近的照片for i in xrange(num_test): #使用L1距离(曼哈顿距离:所有差的和)distances= np.sum(np.abs(self.Xtr - X[i,:]),axis = 1) min_index = np.argmin(distances)#得到最近距离的索引Ypred[i] = self.ytr[min_index]#根据距离最近的样本的标签来预测return Ypred


5、K-Nearest Neighbors

demo:

http://vision.stanford.edu/teaching/cs231n-demos/knn/

关于K值和L1或者L2的选择,需要我们去尝试,而后找到最合适的值:

将训练集分为训练集,验证集,测试集。

K-NN算法缺点:训练耗时,不太适用于图片分类,容易造成纬度灾难


6、Linear Classification







阅读全文
0 0