您的位置:首页 > 理论基础

斯坦福李飞飞-深度学习与计算机视觉 数据驱动的图像分类方式:K最近邻与线性分类器

2017-10-10 12:57 691 查看
图像分类是最基础的

challenges

- 拍摄角度

- 亮度

- 形变

- 遮蔽一部分

- 背景杂斑

数据驱动

收集数据

用机器学习的方法训练数据

用得到的模型进行预测

近邻分类器

待分类对象的类别可以通过在它附近的训练数据的类别来确定,所以采取的策略就是找到离待分类对象最近的邻居进行分析。

如何定义距离

曼哈顿距离

差的绝对值

欧氏距离

差的平方

复杂度分析

随规模增大线性减慢

近似近邻算法

FLANN

加快速度

KNN

def classify(inX, dataSet, labels, k):
dataSetSize = dataSet.shape[0] # 数据集大小
# 计算距离
diffMat = tile(inX, (dataSetSize, 1)) - dataSet
sqDiffMat = diffMat**2
sqDistances = sqDiffMat.sum(axis=1)
distances = sqDistances**0.5
# 按距离排序
sortedDistIndicies = distances.argsort()
# 统计前k个点所属的类别
classCount = {}
for i in range(k):
votaIlabel = labels[sortedDistIndicies[i]]
classCount[votaIlabel] = classCount.get(votaIlabel, 0) + 1
sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True)
# 返回前k个点中频率最高的类别
return sortedClassCount[0][0


用什么距离?

k等于多少?

只能自己测试

缺点

效率低

对于形变效果不好

线性分类器

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  计算机视觉
相关文章推荐