Não teríamos que achar o melhor número de cluster para frequência e depois para receita? Eu achei como melhor nº de cluster o valor 5 para frequência e o valor 4 na recência.
soma_quadrados = calcular_wcss(df_frequencia)
import math
def numero_otimo_clusters(wcss):
x1, y1 = 2, wcss[0] #eu quero começar com 2 cluster, o primeiro valor de wcss
x2, y2 = 20, wcss[len(wcss)-1]
distancias = []
for i in range(len(wcss)):
x0 = i+2 #pois começo do 2
y0 = wcss[i]
numerador = abs((y2-y1)*x0 - (x2-x1)*y0 + x2*y1 - y2*x1)
denominador = math.sqrt((y2 - y1)**2 + (x2 - x1)**2)
distancias.append(numerador/denominador)
return distancias.index(max(distancias)) + 2
n = numero_otimo_clusters(soma_quadrados)
n