Сколько кластеров?

Кластерный анализ на 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 (число кластеров)
  • Альтернативы: средний силуэт и статистика разрыва
Кластерный анализ на Python

Давайте потренируемся!

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

Preparing Video For Download...