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?