Classification sous Python

Nous utilisons encore le module scikit-learn, dédié au Machine Learning.

Pour tester les méthodes de classification, nous allons continuer l'étude de cas sur les données WGI.

Classification

Nous allons ici réaliser une classification non supervisée avec 3 méthodes (CAH, $k$-means et DBSCAN). Bien évidemment, ici, nous pouvons peut-être supposé qu'une partition en 6 classes (1 par continent) est possible. Mais nous n'avons pas de réelle idée de ce nombre de classes. Pour l'estimer, nous allons utiliser 2 techniques.

Classification Ascendante Hiérarchique (CAH)

La première possibilité est d'utiliser la CAH, afin d'obtenir un dendrogramme représentant les regroupements 2 à 2 de toutes les classes.

Tout d'abord, nous importons la méthode, puis nous l'appliquons. Ici, on indique qu'on ne souhaite pas réaliser de découpage au préalable, et donc qu'on souhaite garder toute la hiérarchie. Voici pourquoi on choisit 0 pour le paramètre distance_threshold et None pour n_clusters. Le paramètre affinity permet de choisir la distance utilisée (euclidean par défaut - ce qui nous va bien). Le paramètre linkage permet lui de choisir le critère d'aggrégation entre deux classes (ward par défaut - ce qui nous va bien aussi).

Cette page décrit le programme permettant d'afficher le dendrogramme à partir du résultat de la fonction ci-dessous. Je recopie ici que la fonction (avec un peu d'adaptation).

Nous utilisons donc cette méthode sur nos pays. On remarque un saut important entre 2 et 3 classes, puis entre 3 et 4 classes (et un peu moindre entre 4 et 5 classes). On imagine donc qu'on pourrait couper la hiérarchie à ces 2 niveaux (cf graphique). Ainsi, cela suggère qu'on pourrait avoir une partition soit en 2 classes, soit en 3 classes.

Pour récupérer la partition, il faut relancer la méthode en changeant le paramètre n_clusters (et en laissant la valeur par défaut pour distance_threshold). On va tester 2 et 3 classes. Pour chaque partition obtenue, nous allons regarder la taille des classes et les valeurs moyennes de chaque variable.

Avec 2 classes

On a ici une classe avec des valeurs plutôt négatives pour chaque variable et une autre avec des valeurs positives.

Avec 3 classes

On a maintenant une classe avec des valeurs négatives (proches de -1), une autre avec des valeurs positives (proche de 1), et une dernière classe avec des valeurs autour de 0. C'est la classe avec les valeurs positives qui a été coupée en deux.

$k$-means

L'autre méthode de classification classique est la méthode des $k$-means. Elle est très rapide, mais nécessite de déterminer à l'avance le nombre de classes. Nous allons l'appliquer avec 2 et 3 classes afin de voir quelle partition serait la plus intéressante.

2 classes

On peut avoir ainsi les classes de chaque individus (qui nous servent ici à calculer la taille de chaque classe), ainsi que les centres des classes.

La première classe concerne les pays avec des valeurs positives sur tous les indicateurs, la seconde classe étant ceux avec des valeurs négatives.

On retrouve ici les deux mêmes classes que la méthode CAH avec 2 classes.

En croisant les deux partitions, on voit bien que ce sont les mêmes, à quelques individus prêts.

3 classes

La plus grande classe semble être coupée en 2.

On retrouve les 3 mêmes classes que pour la CAH :

En croisant les deux partitions à 3 classes (CAH et $k$-means), on voit qu'on retrouve les mêmes.

Choix du nombre de classes avec $k$-means

L'algorithme $k$-means nous permet d'avoir à la fin l'inertie intra-classes, qui représente la disparité des individus à l'intérieur des classes. Plus cette valeur est proche de 0, meilleur est la partition. Malheureusement, la meilleure partition selon ce critère est donc celle avec autant de classes que d'individus (ce qui n'est pas très utile...).

On va donc chercher un point d'inflexion dans la courbe d'évolution de ce critère. Voici comment faire pour avoir ce graphique. Et ici, le point le plus marquant est celui à 2 classes. Ensuite, celui à 3 classes peut montrer aussi une certaine cassure dans l'évolution du critère.

A faire

Températures mondiales (anomalies)

Nous continuons de travailler ici sur les données de température mondiale HadCRUT4, fournies par Climate Research Unit.

Pour rappel, voici le code pour l'importer avec la nouvelle version.

Vous devez donc réaliser les étapes suivantes, au propre dans un notebook :

Que peut-on dire globalement ?