当前位置: 首页 > news >正文

OpenCV自学笔记二十三:K近邻算法

K近邻算法(K-Nearest Neighbors,简称KNN)是一种常用的监督学习算法,可以用于分类和回归问题。在OpenCV中,KNN算法有相应的函数实现,主要包含在ml模块中。

KNN算法的原理很简单,它基于样本之间的距离来进行分类或回归。对于分类问题,KNN算法将未知样本与训练集中的样本逐个比较距离,并选择距离最近的K个邻居样本,根据这K个邻居样本的标签进行投票,将未知样本归类为票数最多的标签。对于回归问题,KNN算法将未知样本与训练集中的样本逐个比较距离,并选择距离最近的K个邻居样本,然后取这K个邻居样本的平均值作为未知样本的预测值。

在OpenCV中,KNN算法的函数为`cv.ml.KNearest_create()`。下面是一个使用KNN算法进行分类的示例代码:

import cv2 as cvimport numpy as np# 创建KNN对象knn = cv.ml.KNearest_create()# 准备训练数据trainData = np.array([[1, 1], [1, 3], [2, 2], [2, 4]], dtype=np.float32)responses = np.array([0, 0, 1, 1], dtype=np.float32)# 训练KNN模型knn.train(trainData, cv.ml.ROW_SAMPLE, responses)# 准备测试数据testData = np.array([[3, 1]], dtype=np.float32)# 使用KNN分类_, results, _, _ = knn.findNearest(testData, 1)print("结果:", results)

在上述示例中,我们首先创建了一个KNN对象。然后,准备训练数据`trainData`和对应的标签`responses`。接下来,使用`train()`函数对KNN模型进行训练。最后,准备测试数据`testData`,并使用`findNearest()`函数进行分类预测,其中参数1表示选择距离最近的1个邻居样本。

运行以上代码,将输出结果为`结果: [[0.]]`,表示测试数据被分类为标签0。

除了分类问题,KNN算法还可以用于回归问题。回归问题与分类问题类似,只是需要使用`cv.ml.KNearest_create()`创建的KNN对象设置`cv.ml.KNearest_REGRESSOR`标志,并且使用`findNearest()`函数的返回值来得到预测的连续值。

http://www.lryc.cn/news/172744.html

相关文章:

  • ChatGLM-中英对话大模型-6B试用说明
  • 小白入门pytorch(一)
  • 【STM32笔记】HAL库I2C通信配置、读写操作及通用函数定义
  • Direct3D模板缓存
  • 在windows上执行ssh-keygen报错Bad permissions
  • 给Proxmox VE 虚拟机分配巨大分区惹麻烦
  • 数学建模——统计回归模型
  • C++【个人笔记1】
  • 博通强迫三星签不平等长约,被韩处罚1亿元 | 百能云芯
  • 版本控制 Sourcetree
  • 题目 1059: 二级C语言-等差数列
  • HarmonyOS 如何使用异步并发能力进行开发
  • 时间格式化时候HH和hh的区别
  • aliyunoss上传图片
  • 动手吧,vue数字动画
  • Android12之仿Codec2.0实现传递编解码器组件本质(四十六)
  • MongoDB【部署 04】Windows系统实现MongoDB多磁盘存储
  • ruoyi框架使用自定义用户表登录
  • 计算机视觉与深度学习-卷积神经网络-卷积图像去噪边缘提取-卷积-[北邮鲁鹏]
  • JS手动实现发布者-订阅者模式
  • 【含面试题】MySQL死锁日志分析与解决的Java代码实现
  • 解决方案:TSINGSEE青犀+智能分析网关助力智慧仓储智能化监管
  • 进程间通信
  • Ubuntu 22.04.3 LTS安装
  • 记一次manjaro-i3系统sogoupinying候选词无法正常显示中文(变方框了)问题解决方案
  • Lua学习笔记:词法分析
  • flask服务鉴权
  • 【2023华为杯B题】DFT类矩阵的整数分解逼近(思路及代码下载)
  • 基于微信小程序的校园生活管理系统设计与实现(源码+lw+部署文档+讲解等)
  • SQL server 创建存储过程