Tìm hiểu OpenCV trong Python - Thuật toán KNN - Thực hành 4
Male avatar

aska viết ngày 08/08/2019

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()

:smile:====================:smile:

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()

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

Male avatar

aska

5 bài viết.
1 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
Male avatar
2 0
Bài thực hành theo hướng dẫn 1 Đây là bài mình làm theo các hướng dẫn để mở và xem các thông số của 1 bức ảnh. đây là code sau khi đã chỉnh sửa v...
aska viết 1 tháng trước
2 0
Male avatar
1 0
Sử dụng thư viện Face_Detect đi kèm trong OpenCV Sau khi chạy thử một số bài hướng dẫn khác thì mình vướng 1 số lỗi, chủ yếu là do phiên bản mới c...
aska viết 1 tháng trước
1 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


Male avatar
{{userFollowed ? 'Following' : 'Follow'}}
5 bài viết.
1 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!