Python Tutorial

Python Machine Learning – Clustering hiérarchique


Sur cette page, Infodewi.com collabore avec
Académie des sciences des données de NYC
pour délivrer des contenus de formation numériques à nos étudiants.


Classification hiérarchique

Le clustering hiérarchique est une méthode d’apprentissage non supervisée pour le clustering de points de données. L’algorithme construit des clusters en mesurant les dissemblances entre les données. L’apprentissage non supervisé signifie qu’un modèle n’a pas besoin d’être formé et que nous n’avons pas besoin d’une variable “cible”. Cette méthode peut être utilisée sur toutes les données pour visualiser et interpréter la relation entre les points de données individuels.

Ici, nous utiliserons le clustering hiérarchique pour regrouper les points de données et visualiser les clusters à l’aide d’un dendrogramme et d’un nuage de points.


Comment ça marche?

Nous utiliserons le clustering agglomératif, un type de clustering hiérarchique qui suit une approche ascendante. Nous commençons par traiter chaque point de données comme son propre cluster. Ensuite, nous joignons les clusters qui ont la distance la plus courte entre eux pour créer des clusters plus grands. Cette étape est répétée jusqu’à ce qu’un grand groupe soit formé contenant tous les points de données.

Le regroupement hiérarchique nous oblige à décider à la fois d’une méthode de distance et de liaison. Nous utiliserons la distance euclidienne et la méthode de liaison de Ward, qui tente de minimiser la variance entre les clusters.

Exemple

Commencez par visualiser quelques points de données :

importer numpy en tant que np
importer matplotlib.pyplot en tant que plt

x = [4, 5, 10, 4,
3, 11, 14 , 6, 10, 12]
y = [21, 19, 24, 17, 16, 25, 24, 22, 21, 21]

plt.scatter(x, y)
plt.show()

Résultat

Exemple d’exécution »


PUBLICITÉ


Nous calculons maintenant le lien de service à l’aide de la distance euclidienne et le visualisons à l’aide d’un dendrogramme :

Exemple

importer numpy en tant que np
importer matplotlib.pyplot en tant que plt
de scipy.cluster.hierarchy import dendrogramme, liaison

x = [4, 5, 10, 4, 3,
11, 14 , 6, 10, 12]
y = [21, 19, 24, 17, 16, 25, 24, 22, 21, 21]

données = liste(zip(x, y))

linking_data = linking(data, method=’ward’, metric=”euclidean”)
dendrogramme(linkage_data)

plt.show()

Résultat

Exemple d’exécution »

Ici, nous faisons la même chose avec la bibliothèque scikit-learn de Python. Ensuite, visualisez sur un graphique en 2 dimensions :

Exemple

importer numpy en tant que np
importer matplotlib.pyplot en tant que plt
depuis sklearn.cluster import AgglomerativeClustering

x = [4, 5, 10, 4, 3, 11, 14 , 6, 10, 12]
y = [21, 19, 24, 17, 16, 25, 24, 22, 21, 21]

données = liste(zip(x, y))

hierarchical_cluster = AgglomerativeClustering(n_clusters=2, affinity=’euclidean’, link=”ward”)
labels = hierarchical_cluster.fit_predict(data)

plt.scatter(x, y, c=étiquettes)
plt.show()

Résultat

Exemple d’exécution »

Exemple expliqué

Importez les modules dont vous avez besoin.

import numpy as np
import matplotlib.pyplot as plt
from scipy.cluster.hierarchy import dendrogram, linkage
from sklearn.cluster import AgglomerativeClustering

Vous pouvez en savoir plus sur le module Matplotlib dans notre “Tutoriel Matplotlib.

Vous pouvez en savoir plus sur le module SciPy dans notre didacticiel SciPy.

NumPy est une bibliothèque pour travailler avec des tableaux et des matrices en Python, vous pouvez en savoir plus sur le module NumPy dans notre tutoriel NumPy.

scikit-learn est une bibliothèque populaire pour l’apprentissage automatique.

Créez des tableaux qui ressemblent à deux variables dans un ensemble de données. Notez que bien que nous n’utilisions ici que deux variables, cette méthode fonctionnera avec n’importe quel nombre de variables :

x = [4, 5, 10, 4, 3, 11, 14 , 6, 10, 12]
y = [21, 19, 24, 17, 16, 25, 24, 22, 21, 21]

Transformez les données en un ensemble de points :

data = list(zip(x, y))
print(data)

Résultat:

[(4, 21), (5, 19), (10, 24), (4, 17), (3, 16), (11, 25), (14, 24), (6, 22), (10, 21), (12, 21)]

Calculer le lien entre tous les différents points. Ici, nous utilisons une mesure de distance euclidienne simple et la liaison de Ward, qui cherche à minimiser la variance entre les clusters.

linkage_data = linkage(data, method='ward', metric="euclidean")

Enfin, tracez les résultats dans un dendrogramme. Ce graphique nous montrera la hiérarchie des clusters du bas (points individuels) vers le haut (un seul cluster composé de tous les points de données).

plt.show() nous permet de visualiser le dendrogramme au lieu des seules données de liaison brutes.

dendrogram(linkage_data)
plt.show()

Résultat:

La bibliothèque scikit-learn nous permet d’utiliser le clustering hiérarchique d’une manière différente. Dans un premier temps, nous initialisons le
AgglomerativeClustering classe avec 2 clusters, utilisant la même distance euclidienne et la même liaison de Ward.

hierarchical_cluster = AgglomerativeClustering(n_clusters=2, affinity='euclidean', linkage="ward")

Le .fit_predict La méthode peut être appelée sur nos données pour calculer les clusters en utilisant les paramètres définis sur le nombre de clusters que nous avons choisi.

labels = hierarchical_cluster.fit_predict(data)
print(labels)

Résultat:

Enfin, si nous traçons les mêmes données et colorions les points à l’aide des étiquettes attribuées à chaque index par la méthode de clustering hiérarchique, nous pouvons voir le cluster auquel chaque point a été attribué :

plt.scatter(x, y, c=labels)
plt.show()

Résultat:


#Python #Machine #Learning #Clustering #hiérarchique

Related Articles

Back to top button