Chuẩn hóa thang đo trước khi phân cụm
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 9 trên 51.
K-means phân nhóm dựa trên khoảng cách, nên đơn vị lớn nhất sẽ chi phối. Dữ liệu mèo ở trạm cứu hộ gồm cân nặng tính bằng gam và tuổi tính bằng năm: chênh lệch 500 g lấn át chênh lệch 10 năm.
Trước tiên, hãy chuẩn hóa như với k-NN để mỗi đặc trưng có trọng số như nhau:
X_scaled = StandardScaler().fit_transform(X)
km = KMeans(n_clusters=3, n_init=10, random_state=0)
km.fit(X_scaled)make_pipeline(StandardScaler(), KMeans(...)) thực hiện cả hai việc trong một mô hình. Sau đó, đọc từng nhóm theo đơn vị ban đầu: tính trung bình các hàng ban đầu của nhóm đó, X[km.labels_ == c].mean(axis=0).
Thử thách
DễỨng dụng tìm căn hộ cho thuê phân nhóm 100 tin đăng theo giá thuê và khoảng cách đến ga. Mã khởi đầu phân cụm các cột dữ liệu thô, khiến tất cả các nhóm đều cách ga khoảng 3 km: giá tính bằng đô la lấn át khoảng cách tính bằng ki-lô-mét.
- Chuẩn hóa hai cột bằng
StandardScaler. - Thay vào đó, hãy phân cụm các hàng đã chuẩn hóa. Giữ nguyên phần báo cáo: phần này đọc từng nhóm theo đơn vị thực tế.
Với một thành phố khác:
38 flats: $1820 a month, 0.9 km out
33 flats: $1130 a month, 4.2 km out
29 flats: $2760 a month, 1.5 km outTự làm thử
import pandas as pd
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
# Mỗi căn hộ một hàng: tiền thuê hằng tháng tính bằng đô la, khoảng cách đến ga tính bằng km
flats = pd.read_csv("flats.csv")
X = flats[["rent", "station_km"]]
# Đoạn này phân cụm các cột chưa chuẩn hóa: bạn hãy sửa lại
km = KMeans(n_clusters=3, n_init=10, random_state=0)
km.fit(X)
# In ra thông tin từng nhóm bằng đơn vị thực tế, nhóm lớn nhất trước
sizes = pd.Series(km.labels_).value_counts()
for c in sizes.index:
group = flats[km.labels_ == c]
print(f"{sizes[c]} flats: ${round(group['rent'].mean())} a month, {group['station_km'].mean():.1f} km out")
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