Читать книгу Искусственный интеллект. Машинное обучение онлайн

Иерархическая кластеризация имеет ряд преимуществ. В отличие от метода k-средних, она не требует знания количества кластеров заранее, что делает ее более удобной в использовании. Кроме того, возможность визуализации дендрограммы позволяет анализировать иерархию кластеров и принимать более обоснованные решения.

Однако у этого метода есть и недостатки. Иерархическая кластеризация может быть неэффективной на больших наборах данных из-за сложности вычислений, особенно при использовании полной матрицы расстояний между объектами. Кроме того, этот метод может быть неустойчивым к выбросам, что может привести к нежелательным результатам.


Пример 1

Давайте рассмотрим пример использования иерархической кластеризации на наборе данных о потреблении энергии в различных странах. Допустим, у нас есть данные о потреблении энергии по разным источникам в нескольких странах. Наша задача – провести кластеризацию этих стран на группы с похожими паттернами потребления энергии.

1. Подготовка данных: Загрузим данные о потреблении энергии в разных странах.

2. Иерархическая кластеризация: Применим метод иерархической кластеризации к данным, чтобы разбить страны на кластеры на основе их паттернов потребления энергии.

3. Визуализация дендрограммы: Построим дендрограмму, чтобы визуально оценить иерархию кластеров и выбрать оптимальное число кластеров для нашего анализа.

4. Анализ результатов: Проанализируем полученные кластеры и сделаем выводы о схожести или различии паттернов потребления энергии в различных странах.

Давайте начнем с загрузки данных и применим метод иерархической кластеризации.

```python

import pandas as pd

import matplotlib.pyplot as plt

import seaborn as sns

from sklearn.preprocessing import StandardScaler

from sklearn.cluster import AgglomerativeClustering

from scipy.cluster.hierarchy import dendrogram, linkage

# Загрузка данных

data = pd.read_csv('energy_consumption.csv')

# Подготовка данных

X = data.drop('Country', axis=1) # Отделяем признаки от меток классов

scaler = StandardScaler()