1 传统图像分类算法_K近邻 K-NearestNeighbor(KNN)
K近邻分类的原理:首先,最近邻算法是模型在训练时,记住每张图片的数据和这张图片对应的类别,预测的时候,算出测试集中的图片对应的数值与训练集中哪张图片的对应数值最接近,那么这个数值。最接近的图片对应的类别,就是当前图片的类别。接近程度用距离衡量,有两种L1和L2计算距离的方式。L1距离,就是两个图片对应位置像素值相减,取绝对值,再对差值矩阵求和。
最近邻算法,复杂度训练O(1),预测O(n),这与理想分类算法的需求正好相反,算法实现代码:
import numpy as np
class NearestNeighbor:
'''n个输入,训练的复杂度是O(1),预测的复杂度是O(n)
而我们想实现的是训练慢,预测很快的分类器
'''
def __init__(self):
pass
def train(self,X,y):
'''memorize training data'''
self.Xtr = X
self.ytr = y
def predict(self