No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Aprende todo un fin de semana sin pagar una suscripción 🔥

Aprende todo un fin de semana sin pagar una suscripción 🔥

Regístrate

Comienza en:

3D
19H
17M
56S

Encontrando K

8/27
Recursos

Aportes 2

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Una forma de calcular la inercia:

from scipy.spatial import distance
np.sum(np.min(distance.cdist(X, model.cluster_centers_), axis=1) ** 2)
[out]: 1389.028049083292
model.inertia_
[out]: 1389.028049083292

Aquí comparto un ejercicio con fines prácticos que hice para ver como se forma el codo y su respectiva silueta para cada 2 columnas de un total de 9 que tengo en mi dataset.

n = 2
total_columns = x.columns
combinations_n = list(combinations(total_columns,n))
i = 0
for combination in combinations_n:
    i +=1
    print('# iter: ',i)
    print(list(combination))
    x_n = x[list(combination)]
    sum_of_squared_distances = []
    silhouette_scores = []
    K = range(2,15)
    for k in K:
        km = KMeans(n_clusters=k)
        km = km.fit(x_n)
        sum_of_squared_distances.append(km.inertia_)

        km = KMeans(n_clusters=k)
        km = km.fit(x_n)
        y = km.predict(x_n)
        silhouette_scores.append(silhouette_score(x_n,y))


    plt.figure(figsize=(10,4))
    plt.subplot(121)
    plt.plot(K, sum_of_squared_distances, 'bx-')
    plt.xlabel('k')
    plt.ylabel('Inertia')
    plt.subplot(122)
    plt.plot(K, silhouette_scores, 'rx-')
    plt.xlabel('k')
    plt.ylabel('Silhouette')
    plt.show()