Kmeans метод локтя, не возвращающий локоть - PullRequest
0 голосов
/ 29 января 2019

Таким образом, следуя примеру в документации ( здесь ):

В KElbowVisualizer реализован метод «локтя», который помогает ученым данных выбирать оптимальное количество кластеров путем подбора модели.с диапазоном значений для K. Если линейный график напоминает руку, то «колено» (точка перегиба на кривой) является хорошим показателем того, что базовая модель лучше всего подходит в этой точке.

Что, если на графике нет колена?Когда я запускаю тот же код в моем наборе данных, получается: enter image description here

Таким образом, показатель искажения продолжает увеличиваться для каждого дополнительного кластера.

Однако, когда язапустите другой пример метода локтя, используя атрибут 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()

Вывод:

enter image description here

Какойесть локоть.

В чем разница между этими двумя методами?Почему на первом графике нет колен?

Согласно документации, они оба применяют один и тот же метод расстояний, то есть «Сумма квадратов расстояний образцов до ближайшего центра кластера».

...