基于OpenCV-python的机器学习(Understanding K-Nearest Neighbour编)

基于OpenCV-python的机器学习(Understanding K-Nearest Neighbour编)

摘要

大家都知道,现在学习机器学习,sklearn是标配。
不过在OpenCV里,同样也有一些机器学习的知识。
由于更新换代太快了,连官网上的Demo也是运行不起来的。
而且网友大神们也不做更新,只能自己探究记录了。

代码

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

trainData = np.random.randint(0, 100, (25, 2)).astype(np.float32)
responses = np.random.randint(0, 2, (25, 1)).astype(np.float32)
red = trainData[responses.ravel()==0]
plt.scatter(red[:, 0], red[:, 1], 80, 'r', '^')
blue = trainData[responses.ravel()==1]
plt.scatter(blue[:, 0], blue[:, 1], 80, 'b', 's')
# plt.show()
newcomer = np.random.randint(0, 100, (1, 2)).astype(np.float32)
plt.scatter(newcomer[:, 0], newcomer[:, 1], 80, 'g', 'o')
# knn = cv2.KNearest()  # 官网错误1:对象位置换了
knn = cv2.ml.KNearest_create()
# knn.train(trainData, responses)  # 官网错误2:需要加多类型
knn.train(trainData, cv2.ml.ROW_SAMPLE, responses)
# ret, results, neighbours ,dist = knn.find_nearest(newcomer, 3)  # 官网错误3:方法名字换了
ret, results, neighbours, dist = knn.findNearest(newcomer, 3)
print('result:', results)
print('neighbours:', neighbours)
print('distance', dist)
plt.show()

在这里插入图片描述
结果:

result: [[1.]]
neighbours: [[1. 1. 1.]]
distance [[ 89. 149. 337.]]

后记

还是sklearn好用。train完后,一句score就清楚准确率了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值