Основи кластеризації k-means

Кластерний аналіз у Python

Shaumik Daityari

Business Analyst

Чому кластеризація k-means?

  • Критичний недолік ієрархічної кластеризації: час виконання
  • K-means суттєво швидший на великих наборах даних
Кластерний аналіз у Python

Крок 1: Згенерувати центри кластерів

kmeans(obs, k_or_guess, iter, thresh, check_finite)
  • obs: стандартизовані спостереження
  • k_or_guess: кількість кластерів
  • iter: кількість ітерацій (типово: 20)
  • thres: поріг (типово: 1e-05)
  • check_finite: чи перевіряти, що спостереження містять лише скінченні числа (типово: True)

Повертає два об'єкти: центри кластерів, спотворення

Кластерний аналіз у Python

Як обчислюють спотворення?

Кластерний аналіз у Python

Крок 2: Згенерувати мітки кластерів

vq(obs, code_book, check_finite=True)
  • obs: стандартизовані спостереження
  • code_book: центри кластерів
  • check_finite: чи перевіряти, що спостереження містять лише скінченні числа (типово: True)

Повертає два об'єкти: список міток кластерів, список спотворень

Кластерний аналіз у Python

Примітка щодо спотворень

  • kmeans повертає одне значення спотворення
  • vq повертає список спотворень.
Кластерний аналіз у Python

Запуск k-means

# Import kmeans and vq functions
from scipy.cluster.vq import kmeans, vq
# Generate cluster centers and labels
cluster_centers, _ = kmeans(df[['scaled_x', 'scaled_y']], 3)
df['cluster_labels'], _ = vq(df[['scaled_x', 'scaled_y']], cluster_centers)
# Plot clusters
sns.scatterplot(x='scaled_x', y='scaled_y', hue='cluster_labels', data=df)
plt.show()
Кластерний аналіз у Python

Кластерний аналіз у Python

Далі — вправи!

Кластерний аналіз у Python

Preparing Video For Download...