Data Science, Python, Economie ...

Accueil

Inertie

L'inertie, dans le cadre du clustering par K-means, correspond à somme du carré de la distance entre les points de chaque cluster et leur point moyen.

Le but de l'algoithme K-means est de minimser l'inertie des clusters formés :

$$ \sum^{n}_{i=0}min(\lvert\lvert x_{i}-\mu_{j}\rvert\rvert^{2}) $$

Du fait de l'absence de normalisation des données au préalable, l'inertie peut augmenter fortement. De ce fait, il peut être utile de réduire le nombre de dimensions dans les données par une ACP, ce qui permet par ailleurs d'accélérer les calculs.

Si l'on utilise sklearn.cluster.Kmeanssklearn.cluster.Kmeans - Kmeans facile
sklearn.cluster.Kmeans applique l'algorithme des [[K-Means]].

Initialisation et usage :

On spécifie avec n_cluster=x le nombre de [[centroide|centroides]] qui génèreront des clusters en conséquence.

f = Kmeans(n_clusters = 2)


L'algorithme est lancé ainsi :

# Importation de KMeans :
from sklearn.cluster import KMeans

X = np.array([ [1, 2], [1, 4], [1, 0],
[10, 2], [10, 4], [10, 0] ])

# Creating the classifier, with custom parameters :
cluster_model = KMeans(n_clusters=2)
...
pour générer des clusters au moyen d'un algorithme K-means, on peut accéder aux valeurs d'un modèle généré (.fit()) avec l'attribut .inertia_.

Cela permet notamment d'utiliser la technique du coude pour calculer le nombre optimal de clusters :

k_values = range(1, 10)
inertia_values = [KMeans(k).fit(darts).inertia_
                  for k in k_values]

plt.plot(k_values, inertia_values)
plt.xlabel('K')
plt.ylabel('Inertia')
plt.show()

On peut dès lors choisir le nombre K de clusters qui minimise (K, inertie)