Menu
CoddyTech

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.

challenge icon

Thử thách

Trung bình

Hoà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ãnABABCA

Đâ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)813129232
các nhãnABABCA

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):
        pass

Tấ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