Bạn có chắc chắn muốn xóa bài viết này không ?
Bạn có chắc chắn muốn xóa bình luận này không ?
Tìm hiểu OpenCV trong Python - Thuật toán KNN - Thực hành 4
Khởi tạo mảng random - bảng dữ liệu
Để áp dụng thuật toán trước hết ta cần biết tạo mảng ngẫu nhiên để khởi tạo dữ liệu đầu vào (nếu không muốn nhập tay)
Code
import numpy as np
import cv2
import matplotlib.pyplot as plt #nạp thư viện vào
mang = np.random.randint(0,100, (25,2)).astype(np.float32) #tao 1 mang random khoang tu 0 -100, kieu mang 2 chieu, 25 phan tu
mau = np.random.randint(0,2, (25,1)).astype(np.float32) #tạo một mảng màu ngẫu nhiên gồm 25 phần tử, mảng 1 chiều (cái này sẽ lưu màu - chọn 0 hoặc 1
new = np.random.randint(0,100, (1,2)).astype(np.float32) #đây là phần tử mới thêm ngẫu nhiên vào trong đồ thị
do=mang[mau.ravel()==1]
xanh=mang[mau.ravel()==0]
plt.scatter (do[:,0], do[:,1], 100, 'r','s') #lệnh để vẽ các điểm màu đỏ
plt.scatter (xanh[:,0], xanh[:,1], 100, 'b','8') #lệnh để vẽ các điểm màu xanh
plt.scatter (new[:,0], new[:,1], 100, 'g','D') #lệnh vẽ điểm mới
plt.show()
====================
Sử dụng hàm machine learning KNN xác định phần tử mới thuộc nhóm nào
Code
import numpy as np
import cv2
import matplotlib.pyplot as plt
mang = np.random.randint(0,100, (25,2)).astype(np.float32) #tạo 1 mảng random từ 0 đến 100, kieu mang 2 chieu, 25 phan tu
nhan = np.random.randint(0,2, (25,1)).astype(np.float32) #nhãn kết quả
new = np.random.randint(0,100, (1,2)).astype(np.float32) #phần tử mới cần kiểm tra
do=mang[nhan.ravel()==1]
xanh=mang[nhan.ravel()==0]
plt.scatter (do[:,0], do[:,1], 100, 'r','s')
plt.scatter (xanh[:,0], xanh[:,1], 100, 'b','8')
plt.scatter (new[:,0], new[:,1], 100, 'g','D')
knn = cv2.ml.KNearest_create() #tạo 1 biến knn sử dụng thư viện ml trong cv2 áp dụng thuật toán KNearest
knn.train(mang,0,nhan) #huấn luyện nó với mảng khởi tạo, biến 0, và nhãn đã biết
temp, ketqua, hangxom, khoangcach = knn.findNearest(new,5) # lưu các kết quả trả về vào các biến để dễ hiển thị
if ketqua == [[1.]]:
kl = "do"
else: kl = "xanh"
print("Ket luan: {",kl,"}\n") #hiển thị kết luận nó thuộc đỏ hay xanh
print("Hang xom: {}\n".format(hangxom))
print("Khoang cach: {}\n".format(khoangcach))
plt.show()



