Скільки кластерів?

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

Shaumik Daityari

Business Analyst

Як знайти правильне k?

  • Немає абсолютного способу вибрати правильну кількість кластерів (k) у k-means
  • Метод «лікоть»

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

Повертаємось до спотворення

  • Спотворення: сума квадратів відстаней точок до центрів кластерів
  • Зменшується зі збільшенням кількості кластерів
  • Стає нулем, коли кількість кластерів дорівнює кількості точок
  • Графік «лікоть»: лінійний графік між кількістю кластерів і спотворенням

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

Метод «лікоть»

  • Графік «лікоть»: залежність між кількістю кластерів і спотворенням
  • Допомагає оцінити, скільки кластерів у даних
Кластерний аналіз у Python

Метод «лікоть» у Python

# Declaring variables for use
distortions = []

num_clusters = range(2, 7)
# Populating distortions for various clusters
for i in num_clusters:
    centroids, distortion = kmeans(df[['scaled_x', 'scaled_y']], i)
    distortions.append(distortion)
# Plotting elbow plot data
elbow_plot_data = pd.DataFrame({'num_clusters': num_clusters,
                                'distortions': distortions})

sns.lineplot(x='num_clusters', y='distortions', 
             data = elbow_plot_data)
plt.show()
Кластерний аналіз у Python

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

Підсумки щодо методу «лікоть»

  • Лише підказує оптимальне k (кількість кластерів)
  • Не завжди точно визначає, скільки k (кластерів)
  • Інші підходи: середній силует і gap-статистика
Кластерний аналіз у Python

Далі: вправи

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

Preparing Video For Download...