Задание 1. Кластеризация методом k-means

Даны координаты шести объектов:

import numpy as np

 

X = np.array([

    [1, 1],

    [1, 3],

    [2, 2],

    [8, 8],

    [9, 8],

    [8, 9]

])

Необходимо:

  1. Создать модель KMeans с двумя кластерами.
  2. Установить random_state=42.
  3. Обучить модель.
  4. Вывести метки кластеров.
  5. Вычислить центры кластеров.
  6. Вывести внутрикластерную сумму квадратов.
  7. Объяснить, почему количество кластеров нельзя выбирать только по графику elbow.

Задание 2. DBSCAN и иерархическая кластеризация

Дан набор данных:

import numpy as np

 

X = np.array([

    [0.0, 0.0],

    [0.2, 0.1],

    [0.1, 0.2],

    [5.0, 5.0],

    [5.2, 5.1],

    [5.1, 5.2],

    [10.0, 10.0]

])

Необходимо:

  1. Применить DBSCAN с eps=0.5 и min_samples=2.
  2. Вывести метки кластеров.
  3. Определить шумовые объекты.
  4. Применить AgglomerativeClustering с двумя кластерами.
  5. Сравнить полученные группировки.
  6. Объяснить различие между выделением плотных областей и иерархическим объединением объектов.

Задание 3. PCA и оценка кластеризации

Используя make_blobs, необходимо:

  1. Создать 150 наблюдений с четырьмя признаками и тремя группами.
  2. Выполнить масштабирование признаков.
  3. Применить PCA и уменьшить размерность до двух компонент.
  4. Выполнить кластеризацию методом k-means при k=3.
  5. Вычислить коэффициент силуэта (silhouette_score).
  6. Вывести долю объяснённой дисперсии главных компонент.
  7. Объяснить, почему качество кластеризации необходимо оценивать не только числовыми показателями, но и содержательностью полученных групп.