Étiquettes de grappes en classification hiérarchique

Unsupervised Learning in Python

Benjamin Wilson

Director of Research at lateral.io

Étiquettes de grappes en classification hiérarchique

  • Pas qu'un outil visuel !
  • On peut récupérer les étiquettes à tout stade intermédiaire
  • Utile p. ex. pour des tableaux croisés

Regroupement hiérarchique Eurovision

Unsupervised Learning in Python

Regroupements intermédiaires et hauteur du dendrogramme

  • P. ex. à la hauteur 15 :
    • Bulgarie, Chypre, Grèce forment une grappe
    • Russie et Moldavie en forment une autre
    • Arménie est seule dans sa grappe

Grappe zoomée avec ligne horizontale à la hauteur 15

Unsupervised Learning in Python

Les dendrogrammes montrent les distances entre grappes

  • Hauteur du dendrogramme = distance entre grappes fusionnées
  • P. ex. la grappe Chypre–Grèce avait une distance d'env. 6

Grappe zoomée avec la grappe Chypre/Grèce en surbrillance

Unsupervised Learning in Python

Les dendrogrammes montrent les distances entre grappes

  • Hauteur du dendrogramme = distance entre grappes fusionnées
  • P. ex. la grappe Chypre–Grèce avait une distance d'env. 6
  • Cette nouvelle grappe est à env. 12 de la grappe « Bulgarie seule »

Grappe zoomée avec les grappes Chypre/Grèce et Chypre/Grèce/Bulgarie en surbrillance

Unsupervised Learning in Python

Regroupements intermédiaires et hauteur du dendrogramme

  • La hauteur du dendrogramme fixe la distance max. entre grappes fusionnées
  • Ne fusionnez pas de grappes plus éloignées (p. ex. 15)

Grappe zoomée avec ligne horizontale à la hauteur 15

Unsupervised Learning in Python

Distance entre les grappes

  • Défini par une « méthode d'agrégation »
  • En agrégation « complète » : distance entre grappes = distance max. entre leurs échantillons
  • Spécifié via le paramètre method, p. ex. linkage(samples, method="complete")
  • Méthode d'agrégation différente, classification hiérarchique différente !
Unsupervised Learning in Python

Extraire les étiquettes de grappe

  • Utilisez la fonction fcluster()
  • Retourne un tableau NumPy d'étiquettes de grappe

Grappe zoomée avec ligne horizontale à la hauteur 15

Unsupervised Learning in Python

Extraire des étiquettes avec fcluster

from scipy.cluster.hierarchy import linkage
mergings = linkage(samples, method='complete')
from scipy.cluster.hierarchy import fcluster

labels = fcluster(mergings, 15, criterion='distance') print(labels)
[ 9  8 11 20  2  1 17 14 ... ]
Unsupervised Learning in Python

Faire correspondre étiquettes et noms de pays

Étant donné une liste de chaînes country_names :

import pandas as pd
pairs = pd.DataFrame({'labels': labels, 'countries': country_names})
print(pairs.sort_values('labels'))
               countries  labels
5                Belarus       1
40               Ukraine       1
...
36                 Spain       5
8               Bulgaria       6
19                Greece       6
10                Cyprus       6
28               Moldova       7
...
Unsupervised Learning in Python

Passons à la pratique !

Unsupervised Learning in Python

Preparing Video For Download...