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 module sklearn.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ètre noise=0.05 ajoute un léger bruit aléatoire, et random_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ées X 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") et plt.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.