Menu
CoddyTech

Повторение: породы собак

Часть раздела Обучение без учителя путешествия по Machine Learning на Coddy. Урок 19 из 51.

challenge icon

Задание

Средне

В приюте для собак есть пять комнат для вольеров, и он хочет, чтобы похожие породы жили в одной комнате. В breeds.csv содержатся данные о 21 породе; в заготовке задана высота среза — cut.

  1. Масштабируй features и построй дерево методом Уорда.
  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 группы:

Дерево с заголовком Dog Breeds для 8 пород, названия которых идут вверх; серая пунктирная линия среза на высоте 4 пересекает две цветные ветви: 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, продолжительность жизни (years)
breeds = pd.read_csv("breeds.csv")
features = ["weight_kg", "height_cm", "energy", "lifespan_yr"]
# В приюте пять помещений для собак, поэтому дерево обрезается на этой высоте
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