Таким образом, следуя примеру в документации ( здесь ):
В KElbowVisualizer реализован метод «локтя», который помогает ученым данных выбирать оптимальное количество кластеров путем подбора модели.с диапазоном значений для K. Если линейный график напоминает руку, то «колено» (точка перегиба на кривой) является хорошим показателем того, что базовая модель лучше всего подходит в этой точке.
Что, если на графике нет колена?Когда я запускаю тот же код в моем наборе данных, получается:
Таким образом, показатель искажения продолжает увеличиваться для каждого дополнительного кластера.
Однако, когда язапустите другой пример метода локтя, используя атрибут kmeans.intertia:
sse = {}
for k in range(1, 10):
kmeans = KMeans(n_clusters=k, max_iter=1000).fit(testDF)
testDF["clusters"] = kmeans.labels_
#print(data["clusters"])
sse[k] = kmeans.inertia_ # Inertia: Sum of distances of samples to their
closest cluster center
plt.figure()
plt.plot(list(sse.keys()), list(sse.values()))
plt.xlabel("Number of cluster")
plt.ylabel("SSE")
plt.show()
Вывод:
Какойесть локоть.
В чем разница между этими двумя методами?Почему на первом графике нет колен?
Согласно документации, они оба применяют один и тот же метод расстояний, то есть «Сумма квадратов расстояний образцов до ближайшего центра кластера».