Phương pháp khuỷu tay
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 7 trên 51.
Vẽ đồ thị quán tính theo k. Khi mỗi tâm mới tách một nhóm thực sự, quán tính giảm mạnh, rồi đường cong phẳng dần. Điểm uốn, tức khuỷu, là giá trị k phù hợp:
Một quy tắc kinh nghiệm: dừng lại khi thêm một tâm nữa làm giảm inertia_ dưới một phần tư. Mức giảm của các quả táo: 56%, rồi 69%, rồi chỉ 15%. Vậy k = 3:
ax.plot(ks, inertias, marker="o")
ax.axvline(3, linestyle="--")Đường cong thoai thoải không có chỗ uốn nên không tạo thành các nhóm rõ ràng. Bài học tiếp theo sẽ giới thiệu một giám khảo thứ hai.
Thử thách
DễỨng dụng chăm sóc cây phân loại cây trồng trong nhà thành các kế hoạch chăm sóc dựa trên nhu cầu ánh sáng và nước. Phần khởi đầu có các giá trị quán tính cho k from 1 to 8, một biểu đồ và cutoff.
- Bắt đầu từ k = 1 và tăng dần, dừng tại k tiếp theo làm giảm giá trị quán tính ít hơn
cutoff. In ra k đó. - Vẽ biểu đồ giá trị quán tính theo k bằng các dấu chấm, thêm đường dọc nét đứt tại k bạn chọn, rồi hiển thị biểu đồ.
Với một ứng dụng khác, cutoff là 0.25:
Care plans: 3Sau đó, Coddy sẽ mô tả biểu đồ của bạn.
Tự làm thử
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# Đừng thay đổi các dòng bên dưới
rng = np.random.default_rng(17)
# Bốn loại cây: nhu cầu ánh sáng và nước điển hình, cùng số lượng từng loại
kinds = [(8.5, 2, 35), (2.5, 7.5, 30), (5, 5, 30), (8, 8, 25)]
parts = []
for l, w, n in kinds:
parts.append(np.column_stack([rng.normal(l, 0.8, n), rng.normal(w, 0.8, n)]))
# 120 cây trồng trong nhà, mỗi cây một hàng: nhu cầu ánh sáng và nước được chấm từ 1 đến 10
plants = np.clip(np.round(np.concatenate(parts), 1), 1, 10)
# Inertia cho k từ 1 đến 8, lấy từ Inertia
ks = list(range(1, 9))
inertias = []
for k in ks:
km = KMeans(n_clusters=k, n_init=10, random_state=0)
km.fit(plants)
inertias.append(km.inertia_)
cutoff = float(input())
fig, ax = plt.subplots()
ax.set_title("Elbow: Care Plans")
ax.set_xlabel("k")
ax.set_ylabel("Inertia")
# 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àngTự luyện tập: Trình biên dịch Python online