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.
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:
- 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ểmk) - 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.
- 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.
- 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.centroidsvà 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):
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
