Дендрограммы
Часть раздела Обучение без учителя путешествия по Machine Learning на Coddy. Урок 18 из 51.
Дерево в начале главы — это дендрограмма. Каждая скобка соединяет две группы на высоте, на которой они объединились: чем выше её ветви, тем дальше друг от друга они находились.
Разрежьте дерево линией, и каждая ветвь, которую пересекает линия, станет группой. Здесь их 4:
scipy строит дерево, отображает его и разрезает с помощью 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)Это выводит номер группы для каждого мяча; баскетбольный мяч — отдельно:
[2 2 2 1 1 1 3 3 3 4]Разрежьте самые длинные рёбра: группы ниже находятся далеко друг от друга.
Задание
СреднеМорской гид группирует 16 китов и дельфинов по длине, весу и глубине погружения. В стартовом коде масштабируются их параметры и считывается высота отсечения cut.
- Построй дерево Уорда
Zи отобрази его наax: поверни названия животных на 90 градусов, а цвета ограничь высотой отсечения. - Нарисуй высоту отсечения серой пунктирной линией, затем отобрази график.
- Выведи количество групп.
Для 11 фруктов и высоты отсечения 3.5:
Cut at 3.5: 3 groupsCoddy опишет твоё дерево.
Попробуйте сами
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from scipy.cluster.hierarchy import linkage, dendrogram, fcluster
# 16 китов и дельфинов: длина тела (м), вес (тонны), максимальная глубина погружения (м)
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) # место для названий под деревом
ax.set_title("Whales and Dolphins")
ax.set_ylabel("Merge height")
# Напишите свой код ниже
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Обучение без учителя
1Поиск групп
Обучение без метокИзмерение сходстваK-Means вручнуюK-Means в scikit-learnПовторение: участники спортзала4Иерархическая кластеризация
Пошаговое объединениеАгломеративные моделиДендрограммыПовторение: породы собак2Выбор k
ИнерцияМетод локтяОценки силуэтаМасштабирование перед кластеризациейПовторение: зоны доставкиПотренируйтесь самостоятельно: Онлайн-компилятор Python