Dendrogrammes
Fait partie de la section Apprentissage non supervisé du Journey Machine Learning de Coddy. Leçon 18 sur 51.
L’arbre d’ouverture du chapitre est un dendrogramme. Chaque accolade relie deux groupes à la hauteur où ils ont fusionné : plus ses branches sont hautes, plus les groupes étaient éloignés.
Coupez-le avec une ligne, et chaque branche que la ligne traverse devient un groupe. Ici, 4 :
scipy construit l’arbre, le dessine et le coupe avec fcluster :
from scipy.cluster.hierarchy import linkage, dendrogram, fcluster
Z = linkage(scaled, "ward")
dendrogram(Z, labels=names, leaf_rotation=90, color_threshold=1.2, ax=ax)
ax.axhline(1.2, color="gray", linestyle="--")
groups = fcluster(Z, t=1.2, criterion="distance")
print(groups)Cela affiche un numéro de groupe par balle, le ballon de basket seul :
[2 2 2 1 1 1 3 3 3 4]Coupez les plus longs côtés : les groupes ci-dessous sont très éloignés.
Défi
MoyenUn guide marin regroupe 16 baleines et dauphins selon leur longueur, leur poids et la profondeur de plongée. Le code de départ les met à l’échelle et lit la hauteur de coupe, cut.
- Construis l’arbre de Ward
Zet dessine-le surax: les noms des animaux tournés à 90 degrés, les couleurs s’arrêtant à la coupe. - Trace la coupe avec une ligne grise en pointillés, puis affiche le résultat.
- Affiche le nombre de groupes.
Pour 11 fruits et une coupe à 3.5 :
Cut at 3.5: 3 groupsCoddy décrit ton arbre.
Essayez vous-même
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from scipy.cluster.hierarchy import linkage, dendrogram, fcluster
# 16 baleines et dauphins : longueur du corps (m), poids (tonnes), profondeur maximale de plongée (m)
whales = pd.read_csv("whales.csv")
names = list(whales["animal"])
scaled = StandardScaler().fit_transform(whales[["length_m", "weight_t", "dive_m"]])
cut = float(input())
fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.3) # espace pour les noms sous l’arbre
ax.set_title("Whales and Dolphins")
ax.set_ylabel("Merge height")
# Écrivez votre code ci-dessous
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Apprentissage non supervisé
1Découvrir des groupes
Apprendre sans étiquettesMesurer la similaritéK-Means à la mainK-Means avec scikit-learnRécapitulatif : les membres de la salle de sport4Classification hiérarchique
Fusion étape par étapeModèles agglomératifsDendrogrammesRécapitulatif : races de chiens7L’ACP en pratique
Visualiser 64 dimensionsLes composantes comme motifsCompresser et reconstruireL’ACP avant un modèleRécapitulatif : scanner de visages10Projet : Explorateur de chiffres
Observer les chiffresRéduire avec la PCARegrouper les chiffresNommer les groupesRepérer les intrus2Choisir k
InertieLa méthode du coudeScores de silhouetteMettre à l’échelle avant le clusteringRécapitulatif : zones de livraisonEntraînez-vous par vous-même : Compilateur Python en ligne