Phương thức predict
Bài học 8 trên 19 trong khóa học Giới thiệu về học máy của Coddy.
Thử thách
Trung bìnhHoàn thiện phương thức predict.
Phương thức này nhận một danh sách các điểm mới X.
Với mỗi điểm mới, hãy tính khoảng cách từ điểm đó đến tất cả các điểm khác được lưu trong self.points. Lấy nhãn của self.k điểm gần nhất.
Tìm nhãn chiếm đa số trong các điểm gần nhất, đó sẽ là lớp được dự đoán.
Ví dụ, dưới đây là các điểm và nhãn của chúng:
| các điểm | (1, 5) | (5, 0) | (3, 2) | (8, 1) | (4, 4) | (7, 7) |
| các nhãn | A | B | A | B | C | A |
Đây là một điểm mới (3, 3)
Khoảng cách từ điểm này đến tất cả các điểm khác là:
| các điểm | (1, 5) | (5, 0) | (3, 2) | (8, 1) | (4, 4) | (7, 7) |
| khoảng cách từ (3, 3) | 8 | 13 | 1 | 29 | 2 | 32 |
| các nhãn | A | B | A | B | C | A |
Nếu k = 3 thì ta cần tìm 3 điểm gần nhất với điểm mới. Đó là: (3, 2), (1, 5) và (4, 4). Các nhãn tương ứng với những điểm này là: A, A, C. Ta có 2 A và 1 C. A chiếm đa số, nên điểm mới được phân loại là A.
Phương thức predict sẽ trả về một danh sách các nhãn được phân loại cho những điểm mới.
Để tìm nhãn chiếm đa số trong một danh sách nhãn, hãy dùng: max(set(labels), key = labels.count)
Tự làm thử
class KNN:
def __init__(self, k):
self.points = None
self.labels = None
self.k = k
def distance(self, point_a, point_b):
# Write your code here
return (sum([(point_a[i] - point_b[i])**2 for i in range(len(point_a))]))**0.5
def fit(self, X_train, y_train):
# Write your code here
self.points = X_train
self.labels = y_train
def predict(self, X_test):
passTất cả bài học trong Giới thiệu về học máy
Tự luyện tập: Trình biên dịch Python online