Кластерний аналіз – це важливий метод в області машинного навчання і аналізу даних, який дозволяє групувати подібні об’єкти в окремі кластери або групи. Одним із варіантів кластерного аналізу є двоетапний метод, що включає в себе застосування двох різних алгоритмів кластеризації для отримання кращих результатів. У цій статті ми розглянемо застосування двоетапного кластерного аналізу в середовищі Python та спробуємо вдосконалити методи кластеризації для отримання кращих результатів.
Для початку ми розглянемо основні кроки двоетапного кластерного аналізу. Перший етап включає в себе застосування алгоритму кластеризації, наприклад, KMeans, до вихідних даних. Наступним кроком є використання результатів першого етапу для покращення або доповнення кластеризації іншим алгоритмом, наприклад, ієрархічною кластеризацією. Це дозволяє отримати більш точні і стабільні кластери.
У нашому випадку ми розглядаємо застосування двоетапного кластерного аналізу до набору даних з використанням мови програмування Python. Почнемо з першого етапу – застосування KMeans до вихідних даних. Код для цього виглядає наступним чином:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import numpy as np from sklearn.datasets import make_blobs from sklearn.cluster import KMeans from sklearn.preprocessing import StandardScaler from scipy.cluster.hierarchy import linkage, dendrogram import matplotlib.pyplot as plt # Завантаження даних data = pd.read_csv('Socio-hpms.csv') data.head(10) # Крок 1: Кластеризація методом KMeans kmeans = KMeans(n_clusters=4, random_state=42) kmeans.fit(data) labels = kmeans.labels_ # Опціонально: візуалізація результатів KMeans plt.scatter(X_scaled[:, 0], X_scaled[:, 1], c=labels, s=50, cmap='viridis') plt.title("KMeans Clustering") plt.show() ## Додавання міток K-Means до фрейму даних data.insert((data.shape[1]),'kmeans_data_cluster',kmeans_data_cluster) |
Після першого етапу ми додали мітки кластерів KMeans до нашого фрейму даних і готові перейти до другого етапу – застосування ієрархічної кластеризації. Для цього ми використовуємо центроїди з результатів KMeans як вхідні дані для ієрархічної кластеризації. Код для цього виглядає так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# Крок 2: Ієрархічна кластеризація # Для ієрархічної кластеризації використовуємо центроїди з KMeans як вхідні дані centroids = kmeans.cluster_centers_ # Побудова дендрограми linkage_matrix = linkage(centroids, method='ward') # Візуалізація дендрограми plt.figure(figsize=(10, 7)) plt.title('Hierarchical Clustering Dendrogram (Centroids)') dendrogram(linkage_matrix, above_threshold_color='y', orientation='top') plt.show() # Застосування ієрархічної кластеризації from sklearn.cluster import AgglomerativeClustering hc = AgglomerativeClustering(n_clusters = 3, affinity = 'euclidean', linkage ='ward') y_hc = hc.fit_predict(data) |
Після завершення обох етапів двоетапного кластерного аналізу ми можемо оцінити отримані результати і спробувати вдосконалити методи кластеризації для отримання кращих результатів. Наприклад, можемо провести аналіз параметрів моделі, використовуваних алгоритмів кластеризації, змінити кількість кластерів або використовувати інші методи оцінки якості кластеризації.
У даній статті ми розглянули застосування двоетапного кластерного аналізу в середовищі Python і спробували вдосконалити методи кластеризації для отримання кращих результатів. Використання такого підходу дозволяє отримати більш точні і стабільні кластери при аналізі великих обсягів даних.