openCV study-Moudle5_机器学习

machine learning

ref: https://docs.opencv.org/4.1.0/d6/de2/tutorial_py_table_of_contents_ml.html

PYthon——plt.scatter各参数详解https://blog.csdn.net/qiu931110/article/details/68130199


K-Nearest Neighbour  classification K近邻算法 = kNN

CV_Lesson46_kNN分类.py

所谓K近邻算法,即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例(也就是上面所说的K个邻居), 这K个实例的多数属于某个类,就把该输入实例分类到这个类中。

理论:kNN是一种分类算法。属于监督学习

feature space 特征空间:   N个特征,就是N维的特征空间 。

Classification 分类: 定义标签的过程

k 要取值为奇数

modified kNN-- 加上距离的权重,近的权重大,越远,越小

分类器不需要使用训练集进行训练,训练时间复杂度为0。KNN 分类的计算复杂度和训练集中的文档数目成正比,也就是说,如果训练集中文档总数为 n,那么 KNN 的分类时间复杂度为O(n)

计算量较大:遍历了整个特征空间。开销特别大

 


OCR of Hand-written Data using kNN--

CV_Lesson47_kNN分类字符.py

input -->M-->labels : 先 训练得到模型M, input ,lables 作为输入,knn训练好,

运用模型开始测试,获得的lable' 和真值lable比较。检测分类的结果。

获得90%的准确率。提供更多的数据,可以获得更好的分类结果

 

可以深挖: kNN是如何训练的 ,一个像素一个像素的比较。

 CS231n——图像分类(KNN实现)

https://blog.csdn.net/qq_35206320/article/details/81946246

https://docs.opencv.org/4.1.0/dd/de1/classcv_1_1ml_1_1KNearest.html

 


SVM 支持向量机

理解SVM

支持向量机通俗导论(理解SVM的三层境界)https://blog.csdn.net/v_july_v/article/details/7624837

https://www.cnblogs.com/Undo-self-blog/p/8449393.html

知道是一个分类算法即可,如何应用即可。 推导过程太复杂

 
从上图中我们看到有很多条直线可以将数据分为蓝红两组,那一条直线是最好的呢?直觉上讲这条直线应该是与两组数据的距离越远越好。为什么呢?
因为测试数据可能有噪音影响(真实数据 + 噪声)。这些数据不应该影响分类的准确性。所以这条距离远的直线抗噪声能力也就最强。所以 SVM 要做就是找到一条直线,并使这条直线到(训练样本)各组数据的最短距离最大

CV_Lesson48_SVM分类字符.py

抗扭斜(deskew)

knn 算法直接运用像素作为特征向量, SVM 将使用朝向HOG(直方图)


K-Means Clustering k均值聚类算法

k均值聚类是最著名的划分聚类算法(监督学习),由于简洁和效率使得他成为所有聚类算法中最广泛使用的。给定一个数据点集合和需要的聚类数目k,k由用户指定,k均值算法根据某个距离函数反复把数据分入k个聚类中。

K-means算法是集简单和经典于一身的基于距离的聚类算法

基于的设想:采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。

理论:https://blog.csdn.net/apollo_miracle/article/details/79319431

理解: Tshirt 尺寸问题。工厂需要生产什么大小的衣服可以满足绝大数人的身材要求。(不可能生产所有的尺寸。尽可能少,节省成本)

输入:大众的身高体重分布图   & 输出结果: 尝试的聚类图 (分类过程)

过程是如何进行的??

算法:(k=2,需要分2类的情况)

step1: 随机选2 个点作为圆点 C1,C2

 

step2: 如果某个点(x,y)到C1 的距离比C2 的小,归类为0,反之1  。距离记做di, 计算所有的点到C1,C2的距离,并0/1分类

 

step3: 属于0/1组的点,距离取平均值 avg0,avg1, 平均值的坐标作为新的圆心 (和重心计算好像。重心移动的过程)

repeat step 2,3  直到收敛(圆形不再变化),或者满足停止条件(迭代多少次啊  etc)

 

数学表示:

最后的效果:

总结:

思考: 改进的算法有很多: ,如何选择初始的圆心,如何加快迭代速度。。。

CV_Lesson50_K均值聚类_图像量化.py

减少图片的像素

# 颜色量化就是减少图片中颜色数目的一个过程。

为什么 减少图片中的  色呢 减少内存消耗 有些 备的 源有  
只能显示很少的 色。在 种情 况下就 颜色量化。我们使用 K 值聚类的方法来色 化。
# 没有什么新的知   介绍了。现在有 3 个特征 R G B。所以我们  
 把图片数据变形成 Mx3 M 是图片中像素点的数目 的向 。
 聚类完成后  我们用聚类中心值替换与其同组的像素值
  样结果图片就只含有指定数目的  色了。下 是代码


 


 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值