Regroupement hiérarchique à lien unique clairement expliqué.

Contenu

45830agg_fig-7142957
Regroupement aggloméré par lien unique (La source)

Comme nous le savons tous, Le regroupement hiérarchique aggloméré commence par le traitement de chaque observation comme un groupe individuel, puis la fusion itérative des groupes jusqu'à ce que tous les points de données soient fusionnés en un seul groupe. Los dendrogramas se utilizan para representar resultados de regroupement jerárquico.

Les clusters sont fusionnés en fonction de la distance entre eux et pour calculer la distance entre les clusters, nous avons différents types de liens.

Critères de liaison:

Déterminer la distance entre les ensembles d'observations en fonction de la distance par paires entre les observations.

  • Dans Lien unique, la distance entre deux groupes est la distance minimale entre les membres des deux groupes
  • Dans Appairage complet, la distance entre deux groupes est la distance maximale entre les membres des deux groupes
  • Dans Lien moyen, la distance entre deux clusters est la moyenne de toutes les distances entre les membres des deux clusters
  • Dans Lien centroïde, la distance entre deux groupes est la distance entre leurs centroïdes
40351liaisons-4192536
Illustrer des liens (image de l'auteur)

Dans cet article, notre objectif est de comprendre le processus de clustering en utilisant la méthode du lien unique.

Regroupement à lien unique:

Commencez par importer les bibliothèques nécessaires

importer numpy en tant que np
importer des pandas au format pd
importer matplotlib.pyplot en tant que plt
%matplotlib en ligne
importer scipy.cluster.hierarchy en tant que shc
à partir de scipy.spatial.distance importer squareform, pdist

Créons des données de jouets en utilisant numpy.random.random_sample

a = np.random.random_sample(taille = 5)
b = np.random.random_sample(taille = 5)

Une fois que nous avons généré les points de données aléatoires, nous allons créer un cadre de données pandas.

pointe = ['P1','P2','P3','P4','P5']
données = pd.DataFrame({'Point':point, 'une':np.tour(une,2), 'b':np.tour(b,2)})
données = données.set_index('Point')
Les données
63179cadre de données-6213158

Un regard sur les données de nos jouets. A l'air propre. Passons aux étapes de regroupement.

Paso 1: visualice los datos usando un Diagramme de dispersion

plt.figure(taille de la figue=(8,5))
plt.scatter(Les données['une'], Les données['b'], c="r", marqueur="*")
plt.xlabel('Column a')
plt.ylabel('column b')
plt.titre('Scatter Plot of x and y')pour j dans data.itertuples():
    plt.annoter(j.Index, (j.a, j.b), taille de police=15)
25734nuage de points-8699860
Nuage de points d'un, b (Image de l'auteur)

Paso 2: calcul de la matrice des distances dans la méthode euclidienne en utilisant pdist

dist = pd.DataFrame(forme carrée(pdist(Les données[['une', 'b']]), « euclidien »), colonnes=données.index.valeurs, index=données.index.valeurs)

Pour notre confort, nous ne considérerons que les valeurs limites inférieures du tableau comme indiqué ci-dessous.

57992dist-2747692
Matrice des distances

Paso 3: trouver la distance la plus courte et les combiner en un groupe

71315étape1-1958990

On voit les points P3, P4 a la distance minimale « 0.30232 ». Ensuite, nous allons d'abord les fusionner dans un groupe.

Paso 4: Recalculer la matrice de distance après avoir formé un groupe

Mettre à jour la distance entre le groupe (P3, P4) a P1

= Min (dist (P3, P4), P1)) -> Min (dist (P3, P1), dist (P4, P1))

= Min (0.59304, 0.46098)

= 0,46098

Mettre à jour la distance entre le groupe (P3, P4) un P2

= Min (dist (P3, P4), P2) -> Min (dist (P3, P2), dist (P4, P2))

= Minimum (0,77369, 0,61612)

= 0,61612

Mettre à jour la distance entre le groupe (P3, P4) un P5

= Min (dist (P3, P4), P5) -> Min (dist (P3, P5), dist (P4, P5))

= Minimum (0.45222, 0.35847)

= 0.35847

61173step2mis à jour-1168611
Matrice de distance mise à jour

Répétez les étapes 3, 4 jusqu'à ce que nous restions avec un seul groupe.

Après avoir recalculé la matrice de distance, debemos buscar nuevamente la distancia mínima para hacer un grappe.

98460step3mis à jour-2903708

On voit les points P2, P5 a la distance minimale « 0.32388 ». Nous allons donc les regrouper dans un groupe et recalculer la matrice des distances.

Mettre à jour la distance entre le groupe (P2, P5) a P1

= Min (dist ((P2, P5), P1)) -> Min (dist (P2, P1), dist (P5, P1))

= Min (1.04139, 0.81841)

= 0,81841

Mettre à jour la distance entre le groupe (P2, P5) une (P3, P4)

= Min (dist ((P2, P5), (P3, P4))) -> = Min (dist (P2, (P3, P4)), dist (P5, (P3, P4)))

= Min (dist (0.61612, 0.35847))

= 0.35847

89498step420-20copy-8880240

Après avoir recalculé la matrice de distance, il faut encore chercher la distance minimale.

846491_5rw_o4xuwknjqf1nxxsylw-7092316

Le groupe (P2, P5) a le moins de distance du groupe (P3, P4) « 0.35847 ». Nous allons donc les regrouper.

Mettre à jour la distance entre le groupe (P3, P4, P2, P5) a P1

= Min (dist (((P3, P4), (P2, P5)), P1))

= Min (0,46098, 0,81841)

= 0,46098

20905step520-20copy-2243141

Avec ça, nous finissons par obtenir un seul cluster.

Théoriquement, ci-dessous regroupent les étapes:

  • Points P3, P4 ont la distance la plus courte et sont fusionnés
  • Points P2, P5 ont la distance la plus courte et sont fusionnés
  • Les groupes (P3, P4), (P2, P5) ils sont regroupés
  • Le groupe (P3, P4, P2, P5) fusionne avec le point de données P1

Nous pouvons visualiser la même chose en utilisant un dendrogramme.

plt.figure(taille de la figue=(12,5)) 
plt.titre("Dendrogramme avec encrage unique")  
dend = shc.dendrogram(shc.liaison(Les données[['une', 'b']], method='single'), étiquettes=données.index)
480541_gcxnomipkdkk6zw8ubl1nw-8590181

La longueur des lignes verticales dans le dendrogramme indique la distance. Par exemple, la distance entre les points P2, P5 est 0.32388.

Le regroupement pas à pas que nous avons fait est le même que celui du dendrogramme🙌

Remarques finales:

A la fin de cet article, nous connaissons le travail de fond du regroupement hiérarchique à lien unique. Dans le prochain article, nous apprendrons les autres méthodes de liaison.

Les références:

Regroupement hiérarchique

Regroupement de liens uniques

Lien du référentiel GitHub pour payer Jupyter Notebook

J'espère que ce blog vous aidera à comprendre comment fonctionne le regroupement hiérarchique à lien unique. S'il vous plait, donne-lui une tape 👏. Bon apprentissage !! 😊

Les médias présentés dans cet article ne sont pas la propriété de DataPeaker et sont utilisés à la discrétion de l'auteur.

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.

Haut-parleur de données