Le nombre optimal de clusters n’est pas forcemment évident à savoir, particulièrement quand on ne peut pas visualiser les données (+ de 2 caractéristiques).
La méthode la plus répandue est “L-bow”: choisir la valeur de K à partir de laquelle le modèle ne fait plus de “saut” d’amélioration — il ne fait plus que s’améliorer progressivement. Dans l’exemple ci-dessous, K=3 sera la valeur optimale.
sse = {}
for k in range(1,10):
kmeans = KMeans(n_clusters=k, max_iter=100).fit(X)
df['clusters'] = kmeans.labels_
sse[k] = kmeans.inertia_
plt.figure()
plt.plot(list(sse.keys()), list(sse.values()))
plt.xlabel('No. of clusters (K-Value)')
plt.ylabel('Within Cluster Sum of Squared')