В машинном обучении кластеризация — это задача группировки похожих точек данных вместе. Точки данных в кластере в чем-то схожи, например, по своим характеристикам или поведению.
Кластеризация — это проблема обучения без учителя, что означает, что модель не обучается на размеченных данных. Модель учится определять шаблоны, которые отличают разные кластеры точек данных.
Популярные алгоритмы кластеризации:
Существует несколько алгоритмов кластеризации, каждый из которых имеет собственный подход и подходит для разных типов данных. Давайте углубимся в несколько широко используемых алгоритмов:
Кластеризация K-средних:
- K-Means — это алгоритм кластеризации на основе центроида, который разбивает данные на k кластеров.
- Он направлен на минимизацию суммы квадратов внутри кластера путем итеративного обновления центроидов кластера.
- K-Means эффективен, прост для понимания и хорошо работает с большими наборами данных.
Иерархическая кластеризация:
- Иерархическая кластеризация строит иерархию кластеров с использованием восходящего или нисходящего подхода.
- Он создает дендрограмму, которая представляет слияние или разделение кластеров на основе мер сходства или несходства.
- Иерархическая кластеризация позволяет получить представление о различных уровнях детализации кластеризации.
DBSCAN (пространственная кластеризация приложений с шумом на основе плотности):
- DBSCAN группирует точки данных, которые тесно связаны в пространстве признаков, при этом учитываются точки шума.
- Выявляет основные точки, у которых есть достаточное количество близлежащих точек, и расширяет из них кластеры.
- DBSCAN эффективен при обработке кластеров произвольной формы и устойчив к выбросам.
пакеты для установки
- sklearn: pip install sklearn для доступа к наборам данных и алгоритму кластеризации (KMeans)
- matplotlib: pip install matplotlib для визуализации
from sklearn.cluster import KMeans from sklearn.datasets import load_iris import matplotlib.pyplot as plt # Load the Iris dataset iris = load_iris() X = iris.data # Perform K-Means clustering kmeans = KMeans(n_clusters=3, random_state=42) kmeans.fit(X) # Visualize the clusters plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_, cmap='viridis') plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], marker='x', color='red') plt.xlabel('Sepal Length (cm)') plt.ylabel('Sepal Width (cm)') plt.title('K-Means Clustering on Iris Dataset') plt.show()
В приведенном выше фрагменте кода мы сначала загружаем набор данных Iris с помощью load_iris() из модуля sklearn.datasets. мы также извлекаем данные признаков (X) для кластеризации.
Затем мы инициализируем алгоритм кластеризации K-Means, используя KMeans() из модуля sklearn.cluster. Мы указываем количество кластеров (n_clusters=3) и устанавливаем случайное начальное число для воспроизводимости.
Затем мы подгоняем модель K-Means к данным, используя fit(X). Алгоритм назначает каждую точку данных ближайшему центроиду, формируя кластеры.
Наконец, мы визуализируем кластеры, создавая диаграмму рассеяния точек данных, где каждая точка окрашена в соответствии с присвоенным ей кластером. Кроме того, мы наносим центроиды кластера в виде красных крестов для справки.
Заключение:
Кластеризация — ценный метод обучения без учителя, который позволяет нам обнаруживать закономерности, структуры и взаимосвязи в данных. Мы можем получать информацию, сегментировать данные и принимать обоснованные решения, используя различные алгоритмы кластеризации. В этом сообщении блога мы рассмотрели концепцию кластеризации, обсудили популярные алгоритмы и предоставили пример кода для демонстрации кластеризации в действии.