DBSCAN
Fait partie de la section Apprentissage non supervisé du Journey Machine Learning de Coddy. Leçon 20 sur 51.
Ce chapitre repère des groupes de toutes formes, ainsi que les points qui n'appartiennent à aucun groupe. À la fin, tu cartographies les lumières d'une vallée :
D'abord, les bancs de sable des phoques qui ont mis k-means en échec dans Quand k-means échoue. DBSCAN suit plutôt les groupes :
Un point ayant min_samples points (lui-même inclus) dans eps, le rayon du cercle, se trouve dans une foule. Les foules s'étendent à travers ces points. Aucun k à choisir :
from sklearn.cluster import DBSCAN
labels = DBSCAN(eps=0.2, min_samples=5).fit_predict(X)
print(labels.max() + 1)Cela affiche 2 : les foules sont numérotées à partir de 0, donc le plus grand nombre plus un donne leur nombre.
Défi
MoyenSur un lac gelé, des patineurs filent le long d’une piste qui serpente entre deux îles, tandis qu’une foule assiste à un match de hockey. k-means découperait la piste en morceaux. Le programme lit eps en mètres.
- Ajuste DBSCAN avec cette valeur de eps et
min_samples=5; conserve les foules danslabels. - Affiche le nombre de foules trouvées.
- Représente-les avec
draw_crowds(ax, X, labels)et affiche le graphique.
Pour un autre lac et eps 3.5 :
Crowds found: 3Coddy décrit ton graphique. Puis exécute-le avec eps 8 : où sont passées les foules ?
Essayez vous-même
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import DBSCAN
# Position des 170 patineurs sur le lac gelé, en mètres
skaters = pd.read_csv("skaters.csv")
X = np.column_stack([skaters["x_m"], skaters["y_m"]])
eps = float(input())
# Dessine chaque groupe dans une couleur différente, avec sa taille en légende
def draw_crowds(ax, X, labels):
for crowd in range(labels.max() + 1):
rows = labels == crowd
ax.scatter(X[rows, 0], X[rows, 1], s=14, label=f"{rows.sum()} skaters")
ax.legend()
fig, ax = plt.subplots()
ax.set_title("Skaters on the Lake")
ax.set_xlabel("East (m)")
ax.set_ylabel("North (m)")
# Écrivez votre code ci-dessous
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Apprentissage non supervisé
1Découvrir des groupes
Apprendre sans étiquettesMesurer la similaritéK-Means à la mainK-Means avec scikit-learnRécapitulatif : les membres de la salle de sport4Classification hiérarchique
Fusion étape par étapeModèles agglomératifsDendrogrammesRécapitulatif : races de chiens7L’ACP en pratique
Visualiser 64 dimensionsLes composantes comme motifsCompresser et reconstruireL’ACP avant un modèleRécapitulatif : scanner de visages10Projet : Explorateur de chiffres
Observer les chiffresRéduire avec la PCARegrouper les chiffresNommer les groupesRepérer les intrus2Choisir k
InertieLa méthode du coudeScores de silhouetteMettre à l’échelle avant le clusteringRécapitulatif : zones de livraisonEntraînez-vous par vous-même : Compilateur Python en ligne