KNN算法:

目的是分类,具体过程为,先训练,这个训练我估计只是对训练数据进行一个存储,knn测试的过程是根据测试样例找出与这个样例的距离最近的k个点,看这k个点中哪个分类所占的比例比较多,那么这个样例就属于这个分类。所以我们要做的就是确定这个k,这个k是个超参数,所以需要手动测试。

具体使用方式为

1 knn = cv.KNearest()
2
3 knn.train(train_datas,train_labels)
4
5 ret,result,neighbours,dist = knn.find_nearest(test,k=5)

SVM算法:

支持向量机的目的是拟合出一条决策边界,使得边界两端的数据可以被分开从而得到分类的目的,训练的目的就是得到支持向量,支持向量是用来划定边界的,具体我也讲不清楚,但大致是理解的。

使用方法大致如下

 1 svm_params = dict( kernel_type = cv2.SVM_LINEAR,
 2
 3                     svm_type = cv2.SVM_C_SVC,
 4
 5                     C=2.67, gamma=5.383 )
 6
 7 svm = cv.SVM()
 8
 9 svm.train(train_data,responses,svm_params)
10
11 svm.save("svm_data.dat")
12
13 result = svm.predict_all(test)

要提到的就是这里kernel_type、svm_type、C、gamma

C: 目标函数的惩罚系数C,用来平衡分类间隔margin和错分样本的,default C = 1.0;

kernel:参数选择有RBF, Linear, Poly, Sigmoid, 默认的是”RBF”;

gamma:核函数的系数(‘Poly’, ‘RBF’ and ‘Sigmoid’), 默认是gamma = 1 / n_features;

svm_type 这里用的SVC就是分类

K-Means算法:

假设你要将数据分为2组,那么算法会随机选择两个中心C1和C2,计算每个点到两个中心的距离,如果更接近C1,就标记为0,接近C2,就标记为1,如果更多分组就标记为2、3等等,然后计算所有被标记为0的向量的平均值,用这个平均值作为新的中心,同理标记为1的也是,如此往复,直到两个中心点收敛到固定点,或者我们设定最大迭代次数或达到特定的精度停止,最终会让这些数据点与其对应的之心之间的距离之和最小。

下面是具体使用方法

1 criteria = (cv.TERM_CRITERIA_EPS + cv.TERM_CRITERIA_MAX_ITER,10,1.0)
2 flags = cv.KMEANS_RANDOM_CENTERS
3 compactness,labels,centers = cv.kmeans(z,2,None,criteria,10,flags)

输入的参数依此为

1. samples   np.float32类型的训练数据

2. nclusters(K) 需要分类的数目

3. critria 满足终止的条件,满足这个条件,就停止迭代

第一个参数

cv.TERM_CRITERIA_EPS - 达到精度epsilon就停止迭代

cv.TERM_CRITERIA_MAX_ITER - 达到最大迭代次数max_iter就停止迭代

cv.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER - 满足上述任何条件停止迭代

第二个参数

max_iter - 最大迭代次数

第三个参数

epsilon - 要求的精度

4. attempts:  使用flag指定的算法初始执行算法的次数,估计是通过多次初始化得到一个准确值。

5. flags : 指定初始的中心点的方式,通常又两种方式,cv.KMEANS_PP_CENTERS和cv.KMEANS_RANDOM_CENTERS

返回的参数为

1.compactness : 每个点到其相应中心的平方距离之和

2. labels :  标签数组,其中每个元素标记为0、1、2等等

3. centers :  各组集群的中心

[CV笔记]OpenCV机器学习笔记的更多相关文章

  1. 《Mastering Opencv ...读书笔记系列》车牌识别(II)

    http://blog.csdn.net/jinshengtao/article/details/17954427   <Mastering Opencv ...读书笔记系列>车牌识别(I ...

  2. OpenCV 学习笔记 07 目标检测与识别

    目标检测与识别是计算机视觉中最常见的挑战之一.属于高级主题. 本章节将扩展目标检测的概念,首先探讨人脸识别技术,然后将该技术应用到显示生活中的各种目标检测. 1 目标检测与识别技术 为了与OpenCV ...

  3. OpenCV开发笔记(六十五):红胖子8分钟带你深入了解ORB特征点(图文并茂+浅显易懂+程序源码)

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  4. opencv学习笔记(六)直方图比较图片相似度

    opencv学习笔记(六)直方图比较图片相似度 opencv提供了API来比较图片的相似程度,使我们很简单的就能对2个图片进行比较,这就是直方图的比较,直方图英文是histogram, 原理就是就是将 ...

  5. opencv学习笔记(五)镜像对称

    opencv学习笔记(五)镜像对称 设图像的宽度为width,长度为height.(x,y)为变换后的坐标,(x0,y0)为原图像的坐标. 水平镜像变换: 代码实现: #include <ios ...

  6. opencv学习笔记(四)投影

    opencv学习笔记(四)投影 任选了一张图片用于测试,图片如下所示: #include <cv.h> #include <highgui.h> using namespace ...

  7. opencv学习笔记(二)寻找轮廓

    opencv学习笔记(二)寻找轮廓 opencv中使用findContours函数来查找轮廓,这个函数的原型为: void findContours(InputOutputArray image, O ...

  8. (转) OpenCV学习笔记大集锦 与 图像视觉博客资源2之MIT斯坦福CMU

          首页 视界智尚 算法技术 每日技术 来打我呀 注册     OpenCV学习笔记大集锦 整理了我所了解的有关OpenCV的学习笔记.原理分析.使用例程等相关的博文.排序不分先后,随机整理的 ...

  9. 《Mastering Opencv ...读书笔记系列》车牌识别(I)

    http://blog.csdn.net/jinshengtao/article/details/17883075/  <Mastering Opencv ...读书笔记系列>车牌识别(I ...

随机推荐

  1. PHP中error_reporting()函数的用法(修改PHP屏蔽错误)

    一般在默认的普通PHP文件中输出一个未定义声明的变量是不会报错误的,但在codeigniter框架下却要报错误,这对于想集成 添加 和 修改 页面于一体的”懒人”很不方便,由于是初学者开始还想怎么在代 ...

  2. Netty入门系列(2) --使用Netty解决粘包和拆包问题

    前言 上一篇我们介绍了如果使用Netty来开发一个简单的服务端和客户端,接下来我们来讨论如何使用解码器来解决TCP的粘包和拆包问题 TCP为什么会粘包/拆包 我们知道,TCP是以一种流的方式来进行网络 ...

  3. 多行文字超出字数部分省略(主要解决不兼容;display: -webkit-box;的浏览器)

    注明:内容来处https://www.cnblogs.com/ss977/p/5846176.html 1.现webkit内核的浏览器支持display: -webkit-box;属性, 所以网页中显 ...

  4. PHP RSA算法 HMAC-SHA1加密算法

    HMAC-SHA1加密算法 function getSignature($str, $key) { $signature = ""; if (function_exists('ha ...

  5. IT兄弟连 JavaWeb教程 AJAX常见问题

    1  中文乱码问题 ●  POST提交乱码 乱码原因:所有浏览器对Ajax请求参数都使用UTF-8进行编码,而服务器默认使用ISO-8859-1去解码,所以产生乱码. 解决方法:在服务器接收请求参数前 ...

  6. 阿里云ECS测试服务器部署

    前序:为了提供一个干净的测试环境,更好地验证产品问题,也为了防止被开发人员频繁发布代码而打断测试工作,故测试团队搭建了一台阿里云ECS服务器,以下是具体的部署信息: 1. 安装JDK Java版本:J ...

  7. c#之quartz任务调度的使用

    这里讲下,quartz这种任务调度程序的简单使用 这是使用的quartz的3.x 版本 2.x 版本与此稍有区别,可以在网上查看2.x版本教程 使用语言为c# quartz的使用分为几个步骤 创建一个 ...

  8. CSS揭秘—打字动效(四)

    前言:     所有实例均来自<CSS揭秘>,该书以平时遇到的疑难杂症为引,提供解决方法,只能说秒极了,再一次刷新了我对CSS的认知 该书只提供了关键CSS代码,虽然有在线示例代码链接,但 ...

  9. eosiolib文件解析

    Source base on EOS version: 1.0.5,some photo except.   在eos源码中,eosiolib库在源码中的位置如下: 在\eos\contracts\e ...

  10. mac 安装cocoapods

    按主command+空格 输入ter 就能看到终端 左键单机(直接点回车键也可以)打开即可 需要先安装ruby环境 安装rvm curl -sSL https://get.rvm.io | bash ...