Algorithme de regroupement Mean-Shift

Machine LearningMachine LearningBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Ce laboratoire vous guidera tout au long du processus de mise en œuvre de l'algorithme de regroupement par déplacement moyen à l'aide de la bibliothèque Scikit-learn en Python. Vous allez apprendre à générer des données d'échantillonnage, à effectuer un regroupement avec MeanShift et à tracer les résultats.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour passer à l'onglet Carnet de notes pour accéder au carnet Jupyter pour la pratique.

Parfois, vous devrez peut-être attendre quelques secondes pour que le carnet Jupyter ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations du carnet Jupyter.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez des commentaires après la session, et nous résoudrons rapidement le problème pour vous.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) sklearn(("Sklearn")) -.-> sklearn/UtilitiesandDatasetsGroup(["Utilities and Datasets"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/cluster("Clustering") sklearn/UtilitiesandDatasetsGroup -.-> sklearn/datasets("Datasets") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/cluster -.-> lab-49211{{"Algorithme de regroupement Mean-Shift"}} sklearn/datasets -.-> lab-49211{{"Algorithme de regroupement Mean-Shift"}} ml/sklearn -.-> lab-49211{{"Algorithme de regroupement Mean-Shift"}} end

Importez les bibliothèques requises

Tout d'abord, nous devons importer les bibliothèques requises : numpy, sklearn.cluster, sklearn.datasets et matplotlib.pyplot.

import numpy as np
from sklearn.cluster import MeanShift, estimate_bandwidth
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt

Générez des données d'échantillonnage

Ensuite, nous allons générer des données d'échantillonnage à l'aide de la fonction make_blobs du module sklearn.datasets. Nous allons créer un ensemble de données avec 10 000 échantillons et trois grappes avec des centres à [[1, 1], [-1, -1], [1, -1]] et une déviation standard de 0,6.

centers = [[1, 1], [-1, -1], [1, -1]]
X, _ = make_blobs(n_samples=10000, centers=centers, cluster_std=0.6)

Effectuez un regroupement avec MeanShift

Maintenant, nous allons effectuer un regroupement à l'aide de l'algorithme Mean-Shift avec la classe MeanShift du module sklearn.cluster. Nous utiliserons la fonction estimate_bandwidth pour détecter automatiquement le paramètre de largeur de bande, qui représente la taille de la région d'influence pour chaque point.

bandwidth = estimate_bandwidth(X, quantile=0.2, n_samples=500)
ms = MeanShift(bandwidth=bandwidth, bin_seeding=True)
ms.fit(X)
labels = ms.labels_
cluster_centers = ms.cluster_centers_

Affichez les résultats

Enfin, nous allons tracer les résultats à l'aide de la bibliothèque matplotlib.pyplot. Nous utiliserons des couleurs et des marqueurs différents pour chaque grappe, et nous tracerons également les centres des grappes.

plt.figure(1)
plt.clf()

colors = ["#dede00", "#377eb8", "#f781bf"]
markers = ["x", "o", "^"]

for k, col in zip(range(n_clusters_), colors):
    my_members = labels == k
    cluster_center = cluster_centers[k]
    plt.plot(X[my_members, 0], X[my_members, 1], markers[k], color=col)
    plt.plot(
        cluster_center[0],
        cluster_center[1],
        markers[k],
        markerfacecolor=col,
        markeredgecolor="k",
        markersize=14,
    )
plt.title("Estimated number of clusters: %d" % n_clusters_)
plt.show()

Sommaire

Dans ce laboratoire, nous avons appris à implémenter l'algorithme de regroupement Mean-Shift à l'aide de la bibliothèque Scikit-learn en Python. Nous avons généré des données d'échantillonnage, effectué un regroupement avec MeanShift et tracé les résultats. À la fin de ce laboratoire, vous devriez mieux comprendre comment utiliser l'algorithme Mean-Shift pour regrouper des données.