Когда K-Means не справляется
Часть раздела Обучение без учителя путешествия по Machine Learning на Coddy. Урок 14 из 51.
Алгоритм k-средних представляет каждый кластер в виде круглого пятна вокруг его центра. Дротики образуют мишень с кольцом вокруг неё, а k-средних делит их пополам:
Каждая точка присоединяется к ближайшему центру, поэтому граница между двумя кластерами — это прямая линия посередине между центрами. Никакая прямая линия не отделяет кольцо от его середины.
Длинные, изогнутые или очень неоднородные группы приводят к сбоям в k-means одинаковым образом. Алгоритм всё равно возвращает кластеры, поэтому всегда смотрите на график.
Задание
СреднеДрон обнаружил 200 тюленей на двух изогнутых песчаных отмелях. Стартовый код показывает истинное распределение на панели left.
- Сгруппируй тюленей с помощью метода k-средних, k = 2.
- На панели
rightотобрази каждую группу точечной диаграммой и обозначь её какcluster 0илиcluster 1. - Отметь центры чёрными маркерами
"X"с подписьюcenters. Добавь легенду, затем покажи график.
Coddy описывает твою диаграмму и подсчитывает, сколько тюленей осталось на своей песчаной отмели. Вот так это выглядит для двух групп:
Попробуйте сами
import matplotlib.pyplot as plt
from sklearn.datasets import make_moons
from sklearn.cluster import KMeans
# 200 тюленей отдыхают на двух изогнутых песчаных отмелях, вид с дрона (координаты в 100 м)
X, sandbar = make_moons(n_samples=200, noise=0.07, random_state=4)
# Отображает настоящие песчаные отмели на ax
def draw_truth(ax):
ax.scatter(X[sandbar == 0, 0], X[sandbar == 0, 1], s=12, label="north bar")
ax.scatter(X[sandbar == 1, 0], X[sandbar == 1, 1], s=12, label="south bar")
ax.set_title("The truth")
ax.legend()
fig, (left, right) = plt.subplots(1, 2, figsize=(9, 4))
draw_truth(left)
right.set_title("K-means, k = 2")
# Напишите свой код ниже
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Обучение без учителя
1Поиск групп
Обучение без метокИзмерение сходстваK-Means вручнуюK-Means в scikit-learnПовторение: участники спортзала4Иерархическая кластеризация
Пошаговое объединениеАгломеративные моделиДендрограммыПовторение: породы собак2Выбор k
ИнерцияМетод локтяОценки силуэтаМасштабирование перед кластеризациейПовторение: зоны доставки3Анализ кластеров
Профилирование кластеровЦентры в реальных единицахКластеры и известные меткиКогда K-Means не справляетсяПовторение: дегустация чаяПотренируйтесь самостоятельно: Онлайн-компилятор Python