De acordo com o tema discutido na aula, foi definido que o número ótimo de clusters seria que apresentaria a maior distância para a reta definida pelos pontos P0 e P1. Minha função:
import math
def numero_otimo_clusters(wcss):
x0, y0 = 1, wcss[0]
x1, y1 = 9, wcss[-1]
distancias = []
for i in range(len(wcss)):
x = i + 1
y = wcss[i]
numerador = abs((y1 - y0)*x - (x1 - x0)*y + x1*y0 - y1*x0)
denominador = math.sqrt((y1 - y0)**2 + (x1 - x0)**2)
distancias.append(numerador / denominador)
return distancias.index(max(distancias)) + 1
Que retorna 3 como número ótimo de clusters e não 5 como a professora encontrou.
Pra tirar a dúvida se o problema estava na minha função, decidi retornar um dataframe com as "distâncias". E tbm obtive a mesma resposta. Trẽs.
Alguém poderia me ajudar a entender o que aconteceu aqui?