振り返り:犬種
CoddyのMachine Learningジャーニー「教師なし学習」セクションの一部。レッスン 19/51。
チャレンジ
中級犬の保護施設には犬舎が5部屋あり、似た犬種を同じ部屋に入れたいと考えています。breeds.csvには21種類の犬種が含まれています。スターターコードでは、カットする高さcutが設定されています。
featuresをスケーリングして、Ward法の樹形図を作成します。axにデンドログラムを描画します。犬種名を90度回転し、カット位置で色分けを止め、灰色の破線でカット位置を示します。表示します。- 樹形図をカットし、実際の単位でグループの特徴をまとめ、最も軽いグループから最も重いグループの順に、それぞれ最初の犬種名を付けて出力します。
別の保護施設の場合:
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グループに分けた場合:
すると、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オンラインコンパイラ