Кластеризация сдвига среднего в машинном обучении
Алгоритм сдвига среднего – это непараметрический алгоритм кластеризации, который не требует предварительного знания количества кластеров. Если вы никогда не использовали алгоритм сдвига среднего, эта статья для вас. В этой статье я познакомлю вас с кластеризацией сдвига среднего в машинном обучении и ее реализацией с использованием Python.
Кластеризация сдвига среднего
Кластеризация со сдвигом среднего – это непараметрический алгоритм кластеризации, который не требует каких-либо предварительных знаний о количестве кластеров. Ниже приведен полный перечень операций в алгоритме сдвига среднего:
- Сначала ставим кружок с центром на каждом образце.
- Затем для каждого круга вычисляется среднее значение всех образцов, расположенных в круге.
- Затем он перемещает круг так, чтобы его центр находился в центре среднего
- Затем выполняется итерация шага среднего сдвига до тех пор, пока все круги не перестанут двигаться.
- Затем он сдвигает круги в направлении максимальной плотности, пока каждый круг не достигнет максимума локальной плотности.
- Затем все экземпляры, круги которых обосновались в одном и том же месте, помещаются в один и тот же кластер.
Некоторые особенности этого алгоритма делают его походим на алгоритм кластеризации DBSCAN, например, как он находит любое количество кластеров любой формы. Но в отличие от алгоритма кластеризации DBSCAN, этот алгоритм имеет тенденцию разрезать кластеры на куски, когда они имеют внутреннюю вариацию плотности.
Это – непопулярный алгоритм кластеризации, потому что он не подходит для работы с большими наборами данных. Надеюсь, теперь вы поняли, что такое кластеризация сдвига среднего в машинном обучении. В следующем разделе я расскажу вам о его реализации с использованием Python.
Кластеризация сдвига среднего с использованием Python
Этот алгоритм кластеризации имеет только один важный параметр, известный как пропускная способность, и он представляет собой не что иное, как радиус круга. Библиотека scikit-learn в Python предоставляет класс MeanShift(), который можно использовать для реализации этого алгоритма. Ниже показано, как можно реализовать кластеризацию сдвига среднего с помощью Python:
import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns sns.set() data = pd.read_csv("https://biconsult.ru/img/datascience-ml-ai/Mean-Shift-Clustering-in-Machine-Learning/customers.csv") print(data.head()) data["Income"] = data[["Annual Income (k$)"]] data["Spending"] = data[["Spending Score (1-100)"]] data = data[["Income", "Spending"]] print(data.head()) from sklearn.cluster import MeanShift model = MeanShift(bandwidth=2) model.fit(data) pred = model.fit_predict(data) plt.style.use('seaborn-whitegrid') plt.figure(figsize=(12, 10)) plt.scatter(data["Income"], data["Spending"], c=pred, cmap='rainbow', alpha=0.9) plt.show()
Вы можете использовать этот алгоритм для решения любых задач, основанных на кластеризации, но помните, что он нежелателен для больших наборов данных.
Резюме
Алгоритм сдвига среднего – это непараметрический алгоритм кластеризации, который не требует предварительного знания количества кластеров. Это – не популярный алгоритм кластеризации, потому что он не подходит для работы с большими наборами данных. Надеюсь, вам понравилась эта статья о введении в алгоритм кластеризации сдвига среднего и его реализации с использованием Python.