Menu
CoddyTech

Ôn tập: các giống chó

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 19 trên 51.

challenge icon

Thử thách

Trung bình

Một trại cứu hộ chó có năm phòng nuôi và muốn các giống chó tương tự ở chung một phòng. breeds.csv chứa 21 giống chó; phần code khởi tạo đặt độ cao cắt là cut.

  1. Chuẩn hóa features và xây dựng cây Ward.
  2. Vẽ biểu đồ cây phân cấp trên ax: xoay tên giống chó 90 độ, dừng tô màu tại độ cao cắt và thêm đường cắt nét đứt màu xám. Hiển thị biểu đồ.
  3. Cắt cây, lập hồ sơ các nhóm theo đơn vị thực tế và in ra theo thứ tự từ nhẹ nhất đến nặng nhất, đặt tên mỗi nhóm theo giống chó đầu tiên trong nhóm.

Với một trại cứu hộ khác:

5 breeds like Maltese: 4.1 kg, 24 cm, energy 3.2, 14.4 years
3 breeds like Whippet: 12.7 kg, 46 cm, energy 4.7, 13.3 years

và cây của trại đó được cắt thành 2 nhóm:

Cây có tiêu đề Dog Breeds, gồm 8 giống chó, tên hướng lên trên, với đường cắt nét đứt màu xám ở độ cao 4 đi qua hai nhánh màu: Maltese, Shih Tzu, Bichon Frise, Papillon và Toy Poodle; Whippet, Brittany và Basenji

Sau đó, Coddy 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

# 21 giống chó: cân nặng (kg), chiều cao (cm), mức năng lượng từ 1 đến 5, tuổi thọ (năm)
breeds = pd.read_csv("breeds.csv")
features = ["weight_kg", "height_cm", "energy", "lifespan_yr"]
# Trạm cứu hộ có năm phòng nuôi chó nên cắt cây phân cấp ở độ cao này
cut = 2.5

fig, ax = plt.subplots(figsize=(8, 5))
fig.subplots_adjust(bottom=0.35)  # Chừa chỗ cho tên các giống chó bên dưới cây
ax.set_title("Dog Breeds")
ax.set_ylabel("Merge height")

# Viết code bên dưới

Tất cả bài học trong Học không giám sát

Tự luyện tập: Trình biên dịch Python online