Khi K-Means thất bại
Thuộc phần Học không giám sát trong hành trình Machine Learning của Coddy. Bài học 14 trên 51.
K-means xem mỗi cụm như một khối tròn quanh tâm của nó. Các mũi phi tiêu tạo thành một hồng tâm với một vòng bao quanh, còn k-means chia chúng làm đôi:
Mỗi điểm được gán cho tâm gần nhất, nên ranh giới giữa hai cụm là một đường thẳng nằm chính giữa hai tâm. Không có đường thẳng nào ngăn cách một vòng tròn với phần giữa của nó.
Các nhóm dài, cong hoặc rất không đồng đều đều khiến k-means hoạt động kém theo cùng một cách. Thuật toán vẫn trả về các cụm, vì vậy hãy luôn xem hình minh họa.
Thử thách
Trung bìnhMột máy bay không người lái phát hiện 200 con hải cẩu trên hai bãi cát cong. Đoạn code mẫu vẽ dữ liệu thực tế trên bảng left.
- Phân cụm hải cẩu bằng k-means, k = 2.
- Trên bảng
right, vẽ các điểm của từng cụm, gắn nhãncluster 0hoặccluster 1. - Đánh dấu các tâm bằng ký hiệu
"X"màu đen, gắn nhãncenters. Thêm chú giải, rồi hiển thị biểu đồ.
Coddy mô tả biểu đồ và đếm số hải cẩu ở đúng bãi cát của chúng. Hãy xem ví dụ với hai nhóm:
Tự làm thử
import matplotlib.pyplot as plt
from sklearn.datasets import make_moons
from sklearn.cluster import KMeans
# 200 con hải cẩu nằm nghỉ trên hai bãi cát cong, nhìn từ máy bay không người lái (vị trí tính theo đơn vị 100 m)
X, sandbar = make_moons(n_samples=200, noise=0.07, random_state=4)
# Vẽ hai bãi cát thực tế trên ax
def draw_truth(ax):
ax.scatter(X[sandbar == 0, 0], X[sandbar == 0, 1], s=12, label="north bar")
ax.scatter(X[sandbar == 1, 0], X[sandbar == 1, 1], s=12, label="south bar")
ax.set_title("The truth")
ax.legend()
fig, (left, right) = plt.subplots(1, 2, figsize=(9, 4))
draw_truth(left)
right.set_title("K-means, k = 2")
# Viết code của bạn bên dưới
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Học không giám sát
1Tìm các nhóm
Học không cần nhãnĐo độ tương đồngTự thực hiện K-MeansK-Means trong scikit-learnÔn tập: thành viên phòng gym7PCA trong thực tế
Quan sát 64 chiềuCác thành phần như mẫu hìnhNén và dựng lạiPCA trước khi xây dựng mô hìnhÔn tập: máy quét khuôn mặt10Dự án: Khám phá chữ số
Quan sát các chữ sốThu gọn bằng PCAPhân cụm chữ sốĐặt tên cho các cụmTìm những chữ số khác biệt2Chọn k
Quán tínhPhương pháp khuỷu tayĐiểm số SilhouetteChuẩn hóa thang đo trước khi phân cụmÔn tập: Các vùng giao hàng3Đọc hiểu các cụm
Phân tích đặc điểm các cụmTâm cụm theo đơn vị thực tếCụm và nhãn đã biếtKhi K-Means thất bạiÔn tập: Nếm tràTự luyện tập: Trình biên dịch Python online