search

K-Means Clustering

Thuật toán phân cụm không giám sát: Tự động gom nhóm dựa trên sự tương đồng.

3

Python Lab

Thực thi mô hình dựa trên trực quan hóa.

main.py
import numpy as np
from sklearn.cluster import KMeans

# Dữ liệu đầu vào: Chỉ có Tọa độ (Không có Nhãn)
X = np.array([])

# Khởi tạo thuật toán K-Means với K=3 cụm
model = KMeans(n_clusters=3, random_state=42)

# Chạy thuật toán tìm tâm cụm và gom nhóm (Fit & Predict)
labels = model.fit_predict(X)
centers = model.cluster_centers_

print(f">> Mô hình đã huấn luyện xong.")
print(f">> Số lượng vòng lặp hội tụ: {model.n_iter_}")
print(f">> Các tâm cụm tìm được:\n{centers}")
// Kết quả (Output) sẽ xuất hiện ở đây khi nhấn Run...

groupsNguyên lý hoạt động

K-Means dựa trên nguyên lý **Phân cụm (Clustering)** để tìm ra các mẫu chung trong dữ liệu hỗn độn.

K-Means là thuật toán Học không giám sát (Unsupervised Learning). Khác với KNN cần dữ liệu có sẵn màu/nhãn, K-Means tự đi tìm nhóm (tự đổ màu) cho các điểm dữ liệu thô.

Quy trình: 1. Đặt K tâm cụm ngẫu nhiên -> 2. Gom các điểm gần tâm nhất -> 3. Tính điểm trung bình của từng nhóm làm tâm mới -> 4. Lặp lại cho tới khi tâm không đổi.

ruleCách chọn K?

Bởi vì không biết trước dữ liệu có bao nhiêu nhóm, tìm giá trị $K$ là một nghệ thuật:

  • trending_downPhương pháp cùi chỏ (Elbow Method): Vẽ biểu đồ biến thiên khoảng cách. Chọn $K$ ở điểm gập của khửu tay.
  • pie_chartTùy theo bài toán: Nếu phân loại khách hàng (Rẻ, Trung bình, VIP), bạn sẽ ép $K=3$.

smart_toyỨng dụng thực tế

  • peoplePhân loại khách hàng: Nhóm người dùng dựa trên hành vi mua hàng và thu nhập.
  • imageNén ảnh (Image Compression): Gom các điểm ảnh có màu gần giống nhau thành số lượng màu giới hạn ($K$).

codeTip lập trình

Nhược điểm lớn nhất là K-Means rất nhạy cảm với cách khởi tạo tâm ban đầu (có thể rơi vào cực tiểu cục bộ). Trong thực tế, thư viện Scikit-Learn dùng `k-means++` để khởi tạo thông minh hơn là random.