Biểu đồ dendrogram
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 18 trên 51.
Cây mở đầu chương là một biểu đồ phân cụm. Mỗi nhánh nối hai nhóm tại độ cao chúng được gộp lại: nhánh càng cao thì hai nhóm càng cách xa nhau.
Cắt cây bằng một đường thẳng, mỗi nhánh mà đường thẳng cắt qua sẽ trở thành một nhóm. Ở đây có 4 nhóm:
scipy tạo cây, vẽ cây và cắt cây bằng fcluster:
from scipy.cluster.hierarchy import linkage, dendrogram, fcluster
Z = linkage(scaled, "ward")
dendrogram(Z, labels=names, leaf_rotation=90, color_threshold=1.2, ax=ax)
ax.axhline(1.2, color="gray", linestyle="--")
groups = fcluster(Z, t=1.2, criterion="distance")
print(groups)Lệnh này in ra số nhóm cho mỗi quả bóng, riêng quả bóng rổ:
[2 2 2 1 1 1 3 3 3 4]Đi tắt qua những cạnh dài nhất: các nhóm bên dưới cách nhau khá xa.
Thử thách
Trung bìnhMột hướng dẫn viên về sinh vật biển phân nhóm 16 con cá voi và cá heo theo chiều dài, cân nặng và độ sâu khi lặn. Phần code khởi đầu chuẩn hóa dữ liệu của chúng và đọc độ cao cắt, cut.
- Tạo cây phân cấp Ward
Zvà vẽ cây trênax: tên các loài vật xoay 90 độ, màu sắc dừng ở độ cao cắt. - Vẽ đường cắt nét đứt màu xám, sau đó hiển thị biểu đồ.
- In ra số nhóm.
Với 11 loại quả và độ cao cắt là 3.5:
Cut at 3.5: 3 groupsCoddy mô tả cây của bạn.
Tự làm thử
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from scipy.cluster.hierarchy import linkage, dendrogram, fcluster
# 16 cá voi và cá heo: chiều dài cơ thể (m), cân nặng (tấn), độ sâu lặn lớn nhất (m)
whales = pd.read_csv("whales.csv")
names = list(whales["animal"])
scaled = StandardScaler().fit_transform(whales[["length_m", "weight_t", "dive_m"]])
cut = float(input())
fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.3) # chừa chỗ cho tên bên dưới cây
ax.set_title("Whales and Dolphins")
ax.set_ylabel("Merge height")
# 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