Python opencv 机器学习 1.knn k近邻 学习测试总结

      疫情继续,单纯学图像越学越迷,越感觉图像离不开机器学习神经网络这些,虽然感觉做的东西已经太杂了,但是还是该学学这方面。故正式开始学,不管能不能做很深,先要了解一下入个门。

开始,第一个测试

如图,已经有一些随机数据了,导入另一个新的数据(绿点),根据其邻居的属性来对其进行分类,k为选取邻居的数量,在本次实验中选取3个邻居,一般要选奇数个邻居,与邻居的距离采用欧式距离计算公式

理解knn:根据k个邻居的属性判断自己的属性,一般选奇数个邻居,被修改过得knn,根据与邻居远近的不同改变权重

贴上代码,抄自《OpenCV-Python-Tutorial-中文版20160814》

import cv2
import numpy as np
import matplotlib.pyplot as plt

traindata = np.random.randint(0, 100, (25, 2)).astype(np.float32)

resonses = np.random.randint(0, 2, (25, 1)).astype(np.float32)

red = traindata[resonses.ravel() == 0]
plt.scatter(red[:, 0], red[:, 1], 80, 'r', '^')

blue = traindata[resonses.ravel() == 1]
plt.scatter(blue[:, 0], blue[:, 1], 80, 'b', 's')

newcomer = np.random.randint(0, 100, (1, 2)).astype(np.float32)
plt.scatter(newcomer[:, 0], newcomer[:, 1], 80, 'g', 'o')

# 新来一个数组
# newcomer = np.random.randint(0, 100, (10, 2)).astype(np.float32)
# plt.scatter(newcomer[:, 0], newcomer[:, 1], 80, 'g', 'o')

knn = cv2.ml.KNearest_create()
knn.train(traindata, cv2.ml.ROW_SAMPLE, resonses)
ret, result, neighbours, dist = knn.findNearest(newcomer, 3)

print("result", result, "\n")
print("neighbours", neighbours, "\n")
print("distance", dist)

plt.show()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值