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 DBSCAN
Attributs :
Paramètre
Description
eps
La 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_samples
Le nombre minimum de points requis pour qu'une région soit considérée comme un cluster. Par défaut, c'est 5. metric
La métrique utilisée pour calculer la distance entre les points. Par défaut, c'est 'euclidean' (distance euclidienne). algorithm
Algorithme utilisé pour le calcul des voisins. Peut être 'auto', 'ball_tree', 'kd_tree' ou 'brute'. Par défaut, c'est 'auto'. leaf_size
Paramè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. p
Paramè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_jobs
Le 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 np
importe la bibliothèque NumPy, utilisée pour les calculs numériques et la manipulation de tableaux.import matplotlib.pyplot as plt
importe la bibliothèque matplotlib, utilisée ici pour la visualisation des données sous forme de graphique.from sklearn.cluster import DBSCAN
importe la classe DBSCAN du modulesklearn.cluster
, qui permet de regrouper les données en clusters selon leur densité locale.from sklearn.datasets import make_moons
importe 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.05
ajoute un léger bruit aléatoire, etrandom_state=0
garantit 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éesX
et retourne les étiquettes de cluster pour chaque point (ou-1
pour 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.