1
resposta

Melhor número de clusters para frequência X Melhor número de clusters para recência

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
1 resposta

Se usássemos dessa forma daríamos um peso maior para a frequência na pontuação, já que ela pode ir até 5 e a recência até 4, o que pode fazer para contornar isso se desejar é reescalar todos os clusters ao final com um MinMaxScaler, fazendo todos por exemplo irem de 0 à 1 assim o problema dos pesos não ocorrerá.