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
Fundamentos de clustering
¿Qué es el clustering en machine learning?
Tu primer clustering con scikit-learn
¿Cuándo usar clustering?
¿Cómo evaluar modelos de clustering?
K-means
¿Qué es el algoritmo de K-means y cómo funciona?
¿Cuándo usar K-means?
Implementando K-means
Encontrando K
Evaluando resultados de K-means
Hierarchical clustering
¿Qué es hierarchical clustering y cómo funciona?
¿Cuándo usar hierarchical clustering?
Implementando hierarchical clustering
Evaluando resultados de hierarchical clustering
DBSCAN
¿Qué es DBSCAN y cómo funciona?
¿Cuándo usar DBSCAN?
Implementando DBSCAN
Encontrar híper-parámetros
Evaluando resultados de DBSCAN
Proyecto: resolviendo un problema con clustering
Preparar datos para clusterizar
Aplicando PCA para clustering
Resolviendo con K-means
Resolviendo con hierarchical clustering
Resolviendo con DBSCAN
Resolviendo con DBSCAN (sin PCA)
Evaluación resultados de distintos modelos de clustering
Conclusiones
Proyecto final y cierre
Comparte tu proyecto de segmentación con clustering y certifícate
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 2
Preguntas 2
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()
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?
o inicia sesión.