Phân cụm K-means

Khó

AIhọc không giám sátphân cụm4 test · 12 giây · sai số 1e-5

Chạy thuật toán K-means đúng iters vòng, bắt đầu từ các tâm cụm centers. Mỗi vòng:

1. Gán mỗi điểm vào tâm gần nhất (khoảng cách Euclid; bằng nhau thì chọn tâm có chỉ số nhỏ hơn).

2. Cập nhật mỗi tâm = trung bình các điểm thuộc cụm đó. Cụm rỗng thì giữ nguyên tâm cũ.

Trả về các tâm sau cùng.

Viết hàm

kmeans(X, centers, iters)

Tham số

  • X: ma trận điểm (n, d)
  • centers: tâm khởi tạo (k, d)
  • iters: số vòng lặp

Trả về

Ma trận (k, d).

Ví dụ

Tham số

X = [[0,0],[0,1],[10,10],[10,11]]
centers = [[0,0],[10,10]]
iters = 1

Kết quả

[[0.0,0.5],[10.0,10.5]]

Hai cụm rõ ràng

Tham số

X = [[1],[2],[3]]
centers = [[100],[2]]
iters = 3

Kết quả

[[100.0],[2.0]]

Tâm [100] không có điểm nào → giữ nguyên

Bài tiếp theo: Lan truyền ngược qua lớp tuyến tính →

Python · NumPy

Bấm “Chạy thử” để gọi kmeans() với 2 ví dụ trong đề và so sánh kết quả. Dùng print() thoải mái để gỡ lỗi.