DBSCAN
Fonctions :
-
DBSCAN()
La fonction DBSCAN() (Density-Based Spatial Clustering of Applications with Noise) de sklearn.cluster est un algorithme de clustering basé sur la densité. Contrairement à des algorithmes comme K-means, DBSCAN peut détecter des clusters de forme arbitrée et ne nécessite pas de spécifier le nombre de clusters à l'avance. DBSCAN identifie les points "denses" comme appartenant à un cluster, tandis que les points situés dans des régions de faible densité sont considérés comme du bruit ou des anomalies.
Importation :
from sklearn.cluster import DBSCANAttributs :
Paramètre
Description
epsLa distance maximale entre deux points pour les considérer comme voisins. C'est un paramètre essentiel pour contrôler la densité des clusters. Par défaut, c'est 0.5. min_samplesLe nombre minimum de points requis pour qu'une région soit considérée comme un cluster. Par défaut, c'est 5. metricLa métrique utilisée pour calculer la distance entre les points. Par défaut, c'est 'euclidean' (distance euclidienne). algorithmAlgorithme utilisé pour le calcul des voisins. Peut être 'auto', 'ball_tree', 'kd_tree' ou 'brute'. Par défaut, c'est 'auto'. leaf_sizeParamètre pour les algorithmes 'ball_tree' ou 'kd_tree' qui contrôle la taille des feuilles dans l'arbre. Par défaut, c'est 30. pParamètre de la distance Minkowski utilisé pour calculer les distances. Par défaut, c'est 2, ce qui signifie que la distance euclidienne est utilisée. n_jobsLe nombre de cœurs à utiliser pour le calcul. Par défaut, c'est 1. Utiliser -1 pour utiliser tous les cœurs disponibles. Exemple de code :
import numpy as np import matplotlib.pyplot as plt from sklearn.cluster import DBSCAN from sklearn.datasets import make_moons # Générer des données en 2D (deux demi-cercles) X, _ = make_moons(n_samples=300, noise=0.05, random_state=0) # Appliquer DBSCAN dbscan = DBSCAN(eps=0.2, min_samples=5) clusters = dbscan.fit_predict(X) # Afficher les résultats plt.scatter(X[:, 0], X[:, 1], c=clusters, cmap='viridis') plt.title("Clustering avec DBSCAN") plt.xlabel("X") plt.ylabel("Y") plt.grid(True) plt.show()
Explication du code :
import numpy as npimporte la bibliothèque NumPy, utilisée pour les calculs numériques et la manipulation de tableaux.
import matplotlib.pyplot as pltimporte la bibliothèque matplotlib, utilisée ici pour la visualisation des données sous forme de graphique.
from sklearn.cluster import DBSCANimporte la classe DBSCAN du modulesklearn.cluster, qui permet de regrouper les données en clusters selon leur densité locale.
from sklearn.datasets import make_moonsimporte la fonction make_moons, utilisée pour générer un jeu de données jouet avec une forme en deux demi-cercles.Génération des données
X, _ = make_moons(n_samples=300, noise=0.05, random_state=0)génère 300 points répartis en deux demi-cercles entremêlés.
Le paramètrenoise=0.05ajoute un léger bruit aléatoire, etrandom_state=0garantit la reproductibilité des résultats.Clustering avec DBSCAN
dbscan = DBSCAN(eps=0.2, min_samples=5)initialise un modèle DBSCAN avec :
eps=0.2: rayon de voisinage pour inclure les points dans un cluster.
min_samples=5: nombre minimum de points requis pour former un noyau (core point).
clusters = dbscan.fit_predict(X)entraîne le modèle sur les donnéesXet retourne les étiquettes de cluster pour chaque point (ou-1pour le bruit).Affichage des résultats
plt.scatter(X[:, 0], X[:, 1], c=clusters, cmap='viridis')trace les points en 2D, colorés selon leur cluster (c=clusters), en utilisant la palette de couleurs'viridis'.
plt.title("Clustering avec DBSCAN")ajoute un titre au graphique.
plt.xlabel("X")etplt.ylabel("Y")ajoutent des étiquettes aux axes X et Y.
plt.grid(True)affiche une grille pour faciliter la lecture du graphique.
plt.show()affiche le graphique final, permettant de visualiser les regroupements de points (clusters) détectés par DBSCAN.