Menu
CoddyTech

振り返り:犬種

CoddyのMachine Learningジャーニー「教師なし学習」セクションの一部。レッスン 19/51。

challenge icon

チャレンジ

中級

犬の保護施設には犬舎が5部屋あり、似た犬種を同じ部屋に入れたいと考えています。breeds.csvには21種類の犬種が含まれています。スターターコードでは、カットする高さcutが設定されています。

  1. featuresをスケーリングして、Ward法の樹形図を作成します。
  2. axにデンドログラムを描画します。犬種名を90度回転し、カット位置で色分けを止め、灰色の破線でカット位置を示します。表示します。
  3. 樹形図をカットし、実際の単位でグループの特徴をまとめ、最も軽いグループから最も重いグループの順に、それぞれ最初の犬種名を付けて出力します。

別の保護施設の場合:

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

そして、その樹形図を2グループに分けた場合:

8種類の犬種を示す「Dog Breeds」というタイトルの樹形図。犬種名は上向きに並び、高さ4の位置にある灰色の破線が2本の色付き枝を横切っている。Maltese、Shih Tzu、Bichon Frise、Papillon、Toy Poodle、Whippet、Brittany、Basenji

すると、Coddyがあなたの樹形図について説明します。

自分で試してみよう

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from scipy.cluster.hierarchy import linkage, dendrogram, fcluster

# 21犬種:体重 (kg)、体高 (cm)、活動量は1から5、寿命 (年)
breeds = pd.read_csv("breeds.csv")
features = ["weight_kg", "height_cm", "energy", "lifespan_yr"]
# 保護施設には犬舎が5部屋あるため、この高さで樹形図を切ります
cut = 2.5

fig, ax = plt.subplots(figsize=(8, 5))
fig.subplots_adjust(bottom=0.35)  # 樹形図の下に名前を表示するためのスペース
ax.set_title("Dog Breeds")
ax.set_ylabel("Merge height")

# 以下にコードを書いてください

教師なし学習のすべてのレッスン

自分で練習してみよう: Pythonオンラインコンパイラ