Menu
CoddyTech

Phương thức fit

Bài học 10 trên 19 trong khóa học Giới thiệu về học máy của Coddy.

 

Nguồn: Wikipedia

challenge icon

Thử thách

Khó

Triển khai phương thức fit và hàm find_cluster_centroid. Hàm find_cluster_centroid tìm trọng tâm của một danh sách điểm (cụm). Hướng dẫn tìm trọng tâm nằm trong bài học trước. Để triển khai fit, hãy làm theo các hướng dẫn sau:

  1. Khởi tạo trọng tâm: Đầu tiên, chọn k điểm trong tập dữ liệu làm các trọng tâm ban đầu. Để vượt qua các test case, hãy chọn các điểm thứ 3, 5, 7, 9, … làm trọng tâm ban đầu (tùy theo số điểm k)
  2. Gán cụm: Với mỗi điểm trong tập dữ liệu, tìm trọng tâm gần nhất (bằng các phép đo khoảng cách như khoảng cách Euclid) rồi gán điểm đó vào cụm tương ứng.
  3. Cập nhật trọng tâm: Sau khi gán tất cả điểm vào các cụm, tính lại trọng tâm bằng cách lấy giá trị trung bình của tất cả điểm trong mỗi cụm.
  4. Lặp lại bước 2 và 3: Lặp lại các bước trên cho đến khi các trọng tâm không còn thay đổi đáng kể. Nếu khoảng cách giữa trọng tâm mới và trọng tâm trước đó nhỏ hơn 0.01, hãy dừng lại

Cách vượt qua các test case:

  • Lưu các trọng tâm vào biến self.centroids.
  • Khi tìm được các trọng tâm mới, nếu tổng khoảng cách giữa các trọng tâm mới và các trọng tâm trước đó nhỏ hơn 0.01, hãy giữ lại các trọng tâm trước đó.
  • Thứ tự của các trọng tâm rất quan trọng. Luôn duyệt qua các trọng tâm từ đầu đến cuối.
  • Các test case sẽ in ra self.centroids và kiểm tra xem chúng có chính xác không.

Tự làm thử

def euclidian_distance(point_a, point_b):
    return (sum([(point_a[i] - point_b[i])**2 for i in range(len(point_a))]))**0.5


    
class KMeans:
    def __init__(self, k):
        self.k = k

    def find_cluster_centroid(self, cluster_points):
    # Viết code của bạn ở đây

    def fit(self, X_train):
        # Viết code của bạn ở đây
        self.centroids = ...
    
    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