Другой популярный метод кластеризации — иерархическая кластеризация. Я видел в кластеризации K-минус, что необходимо указать количество кластеров. Иерархическая кластеризация этого не требует. Иерархическая группировка Перед нашим взором предстаёт несколько длинных линий, образующих группы между собой. В иерархической кластеризации такой граф называется дендрограммой. Чуть позже мы узнаем, что это за дендрограмма.

В этой статье будет обсуждаться конвейер иерархической кластеризации. Давайте начнем….

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

Разделение. В этом методе предполагается, что полный набор данных представляет собой один кластер. Затем этот кластер непрерывно разбивается до тех пор, пока каждая точка данных не станет отдельным кластером. Он работает по принципу «сверху вниз».

Агломеративный метод.Агломеративный метод является полной противоположностью разделительного метода, также называемого восходящим методом. В этом методе каждая точка данных изначально рассматривается как отдельный кластер. Затем в зависимости от расстояния между этими скоплениями с ними формируются малые скопления, таким образом, эти малые скопления снова образуют большие скопления. См. (Рис. 2), чтобы понять разницу между подходом «сверху» и «снизу вниз».

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

Полное расстояние — кластеры формируются между точками данных на основе максимального или самого большого расстояния.
Единичное расстояние — кластеры формируются на основе минимального или кратчайшего расстояния между данными. точек.
Среднее расстояние — кластеры формируются на основе минимального или кратчайшего расстояния между точками данных.
Центроидное расстояние — формируются кластеры. на основе центров кластеров или расстояния до центроида.
Словесный метод. Группы кластеров формируются на основе минимальных вариантов внутри разных кластеров.

Реальное применение иерархической кластеризации:

  • Классифицировать животных и растения на основе последовательностей ДНК.
  • Эпидемии, вызванные различными вирусами.

Давайте реализуем Hirecial Clustering поверх оптовых данных, которые можно найти на Kaggle.com: https://www.kaggle.com/binovi/wholesale-customers-data-set

Давайте импортируем необходимую библиотеку:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
import seaborn as sns
from sklearn.preprocessing import normalize
import scipy.cluster.hierarchy as shc
from sklearn.cluster import AgglomerativeClustering

Загрузить набор данных

url='df1= pd.read_csv("C:/Users/elias/Desktop/Data/Dataset/wholesale.csv")'
df = pd.read_csv(url)
df.head()

Мы нормализуем весь набор данных для удобства кластеризации.

data_scaled = normalize(df)
data_scaled = pd.DataFrame(data_scaled, columns=df.columns)
data_scaled.head()

После вызова набора данных вы увидите изображение, похожее на рис.3:

Создание дендрограммы нормализованного набора данных создаст график, подобный рис. 4. Мы создали эту дендрограмму, используя метод Word Linkage. Мы можем создавать дендрограммы другими способами, если захотим. Из этой дендрограммы понятно, что точки данных сначала формируют небольшие кластеры, затем эти небольшие кластеры постепенно становятся более крупными кластерами.

plt.figure(figsize=(10, 7))  
plt.title("Dendrograms using Ward")  
dend = shc.dendrogram(shc.linkage(data_scaled, method='ward'))
plt.show()

Глядя на дендрограмму Рис.4, мы видим, что меньшие кластеры постепенно формируют более крупные кластеры. Даны точки данных по оси X и расстояние до кластера по оси Y. Максимальное расстояние для двух самых больших кластеров, образованных синей линией, равно 7 (с тех пор новых кластеров не образовалось, и расстояние не увеличилось). Мы провели линию для этого расстояния, для удобства нашего понимания. Давайте создадим дендрограмму, используя другой подход — полное связывание:

plt.figure(figsize=(10, 7))
plt.title("Dendrograms using Complete")
dend1 = shc.dendrogram(shc.linkage(data_scaled, method='complete'))
plt.show()

Давайте сделаем дендрограммы, используя одинарную связь:

plt.figure(figsize=(10, 7))
plt.title("Dendrograms using Single")
dend2 = shc.dendrogram(shc.linkage(data_scaled, method='single'))
plt.show()

Теперь мы сделаем это, используя Average:

plt.figure(figsize=(10, 7))
plt.title("Dendrograms using Average")
dend3 = shc.dendrogram(shc.linkage(data_scaled, method='average'))
plt.show()

Рассмотрим теперь группу по среднему значению кластера, чтобы понять, какие товары в среднем продаются в каком кластере.

agg_wholwsales = df.groupby(['cluster_','Channel'])['Fresh','Milk','Grocery','Frozen','Detergents_Paper','Delicassen'].mean()
agg_wholwsales

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

Использованная литература:

  1. https://towardsdatascience.com/machine-learning-algorithms-part-12-hierarchical-agglomerative-clustering-example-in-python-1e18e0075019
  2. https://www.analyticsvidhya.com/blog/2019/05/beginners-guide-hierarchical-clustering/
  3. https://towardsdatascience.com/hierarchical-clustering-in-python-using-dendrogram-and-cophenetic-correlation-8d41a08f7eab

Если вы хотите найти мою недавнюю публикацию, вы можете подписаться на меня в Researchgate или LinkedIn.

Researchgate: https://www.researchgate.net/profile/Elias_Hossain7

LinkedIn: https://www.linkedin.com/in/elias-hossain-b70678160/