python计算机视觉——第八章 图像内容分类

本章介绍图像分类和图像内容分类算法。

8.1 K邻近分类法(KNN)

KNN(K-Nearest Neighbor ,K邻近分类法),把要分类的对象(例如一个特征向量)与训练集中已知类标记的所有对象进行对比,并由k近邻对指派到哪个类进行投票。这种方法通常分类效

果较好,但是也有很多弊端:与K-means 聚类算法一样,需要预先设定k 值,k 值的选择会影响分类的性能;此外,这种方法要求将整个训练集存储起来,如果训练集非常大,搜索起来就非常慢。

将定义的类对象添加到名为knn.py 的文件里:

class KnnClassifier(object):
    def __init__(self,labels,samples):
        """ 使用训练数据初始化分类器"""
        self.labels = labels
        self.samples = samples

    def classify(self,point,k=3):
        """ 在训练数据上采用k 近邻分类,并返回标记"""
        # 计算所有训练数据点的距离
        dist = array([L2dist(point,s) for s in self.samples])
        # 对它们进行排序
        ndx = dist.argsort()
        # 用字典存储k 近邻
        votes = {}
        for i in range(k):
            label = self.labels[ndx[i]]
            votes.setdefault(label,0)
            votes[label] += 1

        return max(votes)
    
    def L2dist(p1,p2):
        return sqrt( sum( (p1-p2)**2) )
相关推荐
只怕自己不够好2 小时前
《OpenCV 图像基础操作全解析:从读取到像素处理与 ROI 应用》
人工智能·opencv·计算机视觉
嵌入式大圣2 小时前
嵌入式系统与OpenCV
人工智能·opencv·计算机视觉
GL_Rain4 小时前
【OpenCV】Could NOT find TIFF (missing: TIFF_LIBRARY TIFF_INCLUDE_DIR)
人工智能·opencv·计算机视觉
向阳逐梦6 小时前
ROS机器视觉入门:从基础到人脸识别与目标检测
人工智能·目标检测·计算机视觉
有Li6 小时前
跨视角差异-依赖网络用于体积医学图像分割|文献速递-生成式模型与transformer在医学影像中的应用
人工智能·计算机视觉
xrgs_shz8 小时前
MATLAB读入不同类型图像并显示图像和相关信息
图像处理·计算机视觉·matlab
华清远见IT开放实验室11 小时前
【每天学点AI】实战图像增强技术在人工智能图像处理中的应用
图像处理·人工智能·python·opencv·计算机视觉
只怕自己不够好11 小时前
《OpenCV 图像缩放、翻转与变换全攻略:从基础操作到高级应用实战》
人工智能·opencv·计算机视觉
HPC_fac1305206781614 小时前
以科学计算为切入点:剖析英伟达服务器过热难题
服务器·人工智能·深度学习·机器学习·计算机视觉·数据挖掘·gpu算力
小陈phd17 小时前
OpenCV从入门到精通实战(九)——基于dlib的疲劳监测 ear计算
人工智能·opencv·计算机视觉