dbscan#
- sklearn.cluster.dbscan(X, eps=0.5, *, min_samples=5, metric='minkowski', metric_params=None, algorithm='auto', leaf_size=30, p=2, sample_weight=None, n_jobs=None)[Quelle]#
Führt DBSCAN-Clustering aus einer Vektor- oder Distanzmatrix durch.
Diese Funktion ist ein Wrapper um
DBSCAN, geeignet für schnelle, eigenständige Clustering-Aufgaben. Für arbeitsablaufbasierte Ansätze, bei denen Klassifikatorattribute oder Pipeline-Integration erforderlich sind, istDBSCANzu bevorzugen.DBSCAN (Density-Based Spatial Clustering of Applications with Noise) ist ein dichte-basierter Clustering-Algorithmus, der eng beieinander liegende Punkte gruppiert und gleichzeitig Punkte in Regionen mit geringer Dichte als Ausreißer markiert.
Lesen Sie mehr im Benutzerhandbuch.
- Parameter:
- X{array-like, scipy sparse matrix} von Form (n_samples, n_features) oder (n_samples, n_samples)
Ein Merkmalsarray oder ein Array von Distanzen zwischen Stichproben, wenn
metric='precomputed'. Bei Verwendung von vorberechneten Distanzen muss X eine quadratische symmetrische Matrix sein.- epsfloat, default=0.5
Die maximale Distanz zwischen zwei Stichproben, damit eine als Nachbarschaft der anderen betrachtet wird. Dies ist keine maximale Grenze für die Distanzen von Punkten innerhalb eines Clusters. Dies ist der wichtigste Parameter von DBSCAN, der für Ihren Datensatz und Ihre Distanzfunktion angemessen gewählt werden muss. Kleinere Werte ergeben mehr Cluster, während größere Werte weniger, größere Cluster ergeben.
- min_samplesint, default=5
Die Anzahl der Stichproben (oder das Gesamtgewicht) in einer Nachbarschaft, damit ein Punkt als Kernpunkt betrachtet wird. Dies schließt den Punkt selbst ein. Höhere Werte ergeben weniger, dichtere Cluster, während niedrigere Werte mehr, spärlichere Cluster ergeben.
- metricstr oder aufrufbar, Standard=’minkowski’
Die Metrik, die beim Berechnen der Distanz zwischen Instanzen in einem Merkmalsarray verwendet werden soll. Wenn metric ein String oder aufrufbar ist, muss es eine der Optionen sein, die von
sklearn.metrics.pairwise_distancesfür seinen metric-Parameter zulässig sind. Wenn metric „precomputed“ ist, wird X als Distanzmatrix angenommen und muss während fit quadratisch sein. X kann ein Sparse Graph sein, in diesem Fall können nur „nonzero“-Elemente als Nachbarn betrachtet werden.- metric_paramsdict, Standard=None
Zusätzliche Schlüsselwortargumente für die Metrikfunktion.
Hinzugefügt in Version 0.19.
- algorithm{‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’}, Standard=’auto’
Der Algorithmus, der vom NearestNeighbors-Modul verwendet wird, um punktweise Distanzen zu berechnen und die nächsten Nachbarn zu finden. „auto“ versucht, den am besten geeigneten Algorithmus basierend auf den an die
fitMethode übergebenen Werten zu bestimmen. Einzelheiten finden Sie in der Dokumentation vonNearestNeighbors.- leaf_sizeint, Standard=30
Die an BallTree oder cKDTree übergebene Blattgröße. Dies kann die Geschwindigkeit der Erstellung und Abfrage sowie den benötigten Speicher für die Speicherung des Baums beeinflussen. Der optimale Wert hängt von der Art des Problems ab. Im Allgemeinen führen kleinere Blattgrößen zu schnelleren Abfragen, aber langsamerer Erstellung.
- pfloat, Standard=2
Potenzparameter für die Minkowski-Metrik. Wenn p = 1, ist dies äquivalent zur Verwendung der Manhattan-Distanz (l1) und der Euklidischen Distanz (l2) für p = 2. Für beliebiges p wird die Minkowski-Distanz (l_p) verwendet. Dieser Parameter muss positiv sein.
- sample_weightarray-like der Form (n_samples,), Standardwert=None
Gewicht jeder Stichprobe, so dass eine Stichprobe mit einem Gewicht von mindestens
min_samplesfür sich allein eine Kernstichprobe ist; eine Stichprobe mit negativem Gewicht kann verhindern, dass ihr eps-Nachbar ein Kernpunkt ist. Beachten Sie, dass Gewichte absolut sind und standardmäßig 1 sind.- n_jobsint, default=None
Die Anzahl der parallelen Jobs, die für die Nachbarschaftssuche ausgeführt werden.
Nonebedeutet 1, es sei denn, es befindet sich in einemjoblib.parallel_backendKontext.-1bedeutet die Verwendung aller Prozessoren. Weitere Details finden Sie im Glossar. Wenn vorberechnete Distanzen verwendet werden, ist die parallele Ausführung nicht verfügbar und somit hat n_jobs keine Auswirkungen.
- Gibt zurück:
- core_samplesndarray von Form (n_core_samples,)
Indizes der Kernpunkte.
- labelsndarray der Form (n_samples,)
Cluster-Labels für jeden Punkt. Rauschpunkte erhalten das Label -1. Nicht-negative ganze Zahlen zeigen die Cluster-Zugehörigkeit an.
Siehe auch
Anmerkungen
Ein Beispiel finden Sie unter Demo des DBSCAN-Clustering-Algorithmus.
Diese Implementierung berechnet alle Nachbarschaftsabfragen in großen Mengen, was die Speicherkomplexität auf O(n.d) erhöht, wobei d die durchschnittliche Anzahl von Nachbarn ist, während das ursprüngliche DBSCAN eine Speicherkomplexität von O(n) hatte. Es kann eine höhere Speicherkomplexität beim Abfragen dieser nächsten Nachbarschaften aufweisen, abhängig vom
algorithm.Ein Weg, die Abfragekomplexität zu vermeiden, ist das Vorberechnen spärlicher Nachbarschaften in Chunks mit
NearestNeighbors.radius_neighbors_graphmitmode='distance'und dann die Verwendung vonmetric='precomputed'hier.Ein weiterer Weg, den Speicher und die Rechenzeit zu reduzieren, ist das Entfernen von (nahezu) doppelten Punkten und die Verwendung von
sample_weightstattdessen.OPTICSbietet ein ähnliches Clustering mit geringerem Speicherverbrauch.Referenzen
Ester, M., H. P. Kriegel, J. Sander und X. Xu, „A Density-Based Algorithm for Discovering Clusters in Large Spatial Databases with Noise“. In: Proceedings of the 2nd International Conference on Knowledge Discovery and Data Mining, Portland, OR, AAAI Press, S. 226-231. 1996
Schubert, E., Sander, J., Ester, M., Kriegel, H. P. & Xu, X. (2017). „DBSCAN revisited, revisited: why and how you should (still) use DBSCAN.“ ACM Transactions on Database Systems (TODS), 42(3), 19.
Beispiele
>>> from sklearn.cluster import dbscan >>> X = [[1, 2], [2, 2], [2, 3], [8, 7], [8, 8], [25, 80]] >>> core_samples, labels = dbscan(X, eps=3, min_samples=2) >>> core_samples array([0, 1, 2, 3, 4]) >>> labels array([ 0, 0, 0, 1, 1, -1])