Метод локтя
Часть раздела Обучение без учителя путешествия по Machine Learning на Coddy. Урок 7 из 51.
Постройте график зависимости inertia от k. Пока каждый новый центр разделяет настоящую группу, inertia резко падает, а затем кривая выравнивается. Изгиб, «локоть», указывает на подходящее значение k:
Практическое правило: остановитесь, когда добавление ещё одного центра уменьшает inertia_ менее чем на четверть. Уменьшение для яблок: 56%, затем 69%, а потом всего 15%. Значит, k = 3:
ax.plot(ks, inertias, marker="o")
ax.axvline(3, linestyle="--")Плавная кривая без изгибов означает, что четких групп нет. На следующем уроке появится второй судья.
Задание
ЛегкоПриложение для растений сортирует комнатные растения по планам ухода с учётом потребности в свете и воде. В стартовом коде есть значения инерции для k from 1 to 8, график и cutoff.
- Двигаясь вверх от k = 1, остановись там, где следующий k уменьшает инерцию меньше чем на
cutoff. Выведи это k. - Построй график зависимости инерции от k с точками, пунктирной вертикальной линией на значении твоего k и покажи график.
Для другого приложения, cutoff 0.25:
Care plans: 3Затем Coddy опишет твой график.
Попробуйте сами
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# Не изменяйте строки ниже
rng = np.random.default_rng(17)
# Четыре вида растений: типичная потребность в свете и воде, а также количество растений
kinds = [(8.5, 2, 35), (2.5, 7.5, 30), (5, 5, 30), (8, 8, 25)]
parts = []
for l, w, n in kinds:
parts.append(np.column_stack([rng.normal(l, 0.8, n), rng.normal(w, 0.8, n)]))
# 120 комнатных растений, по одной строке на каждое: потребность в свете и воде по шкале от 1 до 10
plants = np.clip(np.round(np.concatenate(parts), 1), 1, 10)
# Инерция для k от 1 до 8, из Inertia
ks = list(range(1, 9))
inertias = []
for k in ks:
km = KMeans(n_clusters=k, n_init=10, random_state=0)
km.fit(plants)
inertias.append(km.inertia_)
cutoff = float(input())
fig, ax = plt.subplots()
ax.set_title("Elbow: Care Plans")
ax.set_xlabel("k")
ax.set_ylabel("Inertia")
# Напишите свой код ниже
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Обучение без учителя
1Поиск групп
Обучение без метокИзмерение сходстваK-Means вручнуюK-Means в scikit-learnПовторение: участники спортзала4Иерархическая кластеризация
Пошаговое объединениеАгломеративные моделиДендрограммыПовторение: породы собак2Выбор k
ИнерцияМетод локтяОценки силуэтаМасштабирование перед кластеризациейПовторение: зоны доставкиПотренируйтесь самостоятельно: Онлайн-компилятор Python