美文网首页
使用KNN模块分类

使用KNN模块分类

作者: 大龙10 | 来源:发表于2024-01-08 15:13 被阅读0次

书名:计算机视觉40例从入门到深度学习:OpenCV-Python
作者:李立宗
出版社:电子工业出版社
出版时间:2022-07-01
ISBN:9787121436857


第15章 机器学习导读

15.4 OpenCV机器学习模块的使用

  • OpenCV中机器学习模块的使用主要包含如下三个步骤:
    ● Step 1:模型初始化。
    ● Step 2:训练模型。
    ● Step 3:使用模型处理问题。

15.4.1 使用KNN模块分类

1、三个步骤

  • 如图15-38所示,按照在OpenCV中使用机器学习模块的三个步骤使用KNN模块即可。


    图15-38 使用KNN模块的流程示意图

2、每步使用的函数。

  • Step 1:模型初始化。
    knn=cv2.m1.KNearest create() #生成空模型
  • Step 2:训练模型。
    该步骤使用训练数据(原始特征值)、训练数据的响应值(训练数据的标签、分类信息)、数据的形状(行、列)完成训练,生成可以使用的模型。
    knn.train(trainData, cv2.m1.ROW_SAMPLE, trainLabels)
    其中:
    ● trainData是训练数据的特征值。
    ● cv2.ml.ROW_SAMPLE是数据类型,当前值表示数据是行形式的,也可以是列形式的(cv2.ml.COL_SAMPLE)。
    ● trainLabels是训练数据特征值对应的标签。
  • Step 3:使用模型。
    该步骤使用训练好的模型完成任务。将要处理对象的特征值和K值作为参数,传递给训练好的模型,使用函数findNearest得出计算结果。
    ret,result,neighbours,dist = knn.findNearest(test,k)
    其中:
    ● ret是浮点型的返回结果值。
    ● result是numpy.ndarray型的K近邻算法的运算结果(若将某图像识别为数值3,则通过result返回标签为3的numpy.ndarray形式的值“[[3.]]”)。
    ● neighbours是K个邻居的标签。
    ● dists是到K个邻居的距离。
    ● test是需要处理对象的特征值(如待识别图像的特征值)。
    ● k是K近邻算法中的K值大小。如果想使用最近邻算法,使k=1即可。

3、实例

  • 【例15.1】使用KNN模块完成数据分类预测。
    如图15-39所示,假设有两组数对,一组数对在(0,10)范围内,标签为“0”;另外一组数对在(90,100)范围内,标签为“1”。使用KNN模块预测数对(31,28)在K=3时的标签。


    图15-39 示意图
  • 由图15-39很容易判断出未知标签为“0”。下面根据题目要求,编写程序通过KNN模块进行判断。
# -*- coding: utf-8 -*-
"""
Created on Tue Jan  9 09:04:53 2024

@author: dalong10
"""

import cv2
import numpy as np

# =====生成模拟数据及标签====
trainData = np.array([[5,6],[9,8],[3,8],[99,94],[89,91],[92,96]]).astype(np.float32) 
tdLable = np.array([[0],[0],[0],[1],[1],[1]]).astype(np.float32)
test=np.array([[31,28]]).astype(np.float32)

# =======使用KNN 算法===============
knn = cv2.ml.KNearest_create()
knn.train(trainData, cv2.ml.ROW_SAMPLE, tdLable)
ret,results, neighbours, dist = knn.findNearest(test,3)

# ========泉示结果============
print("当前数可以判定为类型:", results[0][0].astype(int))
print ("距离当前点最近的3 个邻居是:",neighbours)
print("3个最近邻居的距离:",dist)

运行结果

从上述程序结果可以看出,KNN模块预测的结果与通过图15-39判断的结果一致。

4、把抽象的问题处理为数值

  • 本例使用的是纯数值。
    实践中,要做的就是把抽象的问题处理为数值。
    例如,将不同直径、质量的钻石划分为甲级、乙级,需要把钻石的直径、质量作为训练数据,把等级作为训练数据的标签,从而使用KNN模块或SVM模块对未知数据进行类别划分。

相关文章

  • 6.3.2KNN最邻近分类的python实现方法neighbor

    1--from sklearn import neighbors #导入KNN分类模块 导入模块,创建数据 2-...

  • 2020-08-10--KNN01

    KNN算法的原理介绍KNN算法的一个简单实现(肿瘤分类)将KNN算法封装成函数机器学习套路使用scikit-lea...

  • 自然语言处理实战(二)

    本文的前篇是自然语言处理实战(一) 在自然语言处理实战(一)中,我们使用KNN对搜狗新闻语聊进行分类,KNN分类准...

  • 【机器学习与R语言】2-懒惰学习K近邻(kNN)

    1.理解使用KNN进行分类 KNN特点 近邻分类器:一种懒惰学习器,即把未标记的案例归类为与它们最相似的带有标记的...

  • AppDelegate如何瘦身?

    1、使用分类,拆分模块到分类中。(分类中同名方法覆盖问题)2、不使用分类,拆分模块,每个模块的处理数据方法注册到原...

  • 机器学习笔记汇总

    kNN算法:K最近邻(kNN,k-NearestNeighbor)分类算法

  • k-邻近算法

    使用Python实现kNN分类为算法 计算距离函数classify0()如下: 输入参数:用于分类的输入向量inX...

  • 100天机器学习实践之第7天

    K—近邻分类算法(KNN) KNN是什么? K—近邻算法(简称KNN)是一种虽然简单但很常用的分类算法,也可用于回...

  • 利用Python进行数字识别

    思路 通过Python实现KNN算法。而KNN算法就是K最近邻(k-Nearest Neighbor,KNN)分类...

  • kNN分类算法实例

    写在前面: kNN算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法,它是分类技术中最简单...

网友评论

      本文标题:使用KNN模块分类

      本文链接:https://www.haomeiwen.com/subject/fuogndtx.html