OPTICS#

class sklearn.cluster.OPTICS(*, min_samples=5, max_eps=inf, metric='minkowski', p=2, metric_params=None, cluster_method='xi', eps=None, xi=0.05, predecessor_correction=True, min_cluster_size=None, algorithm='auto', leaf_size=30, memory=None, n_jobs=None)[Quelle]#

Schätzt die Clustering-Struktur aus einer Vektor-Array.

OPTICS (Ordering Points To Identify the Clustering Structure), eng verwandt mit DBSCAN, findet Kernpunkte hoher Dichte und erweitert Cluster von ihnen aus [1]. Im Gegensatz zu DBSCAN behält es die Clusterhierarchie für einen variablen Nachbarschaftsradius bei. Besser geeignet für die Verwendung auf großen Datensätzen als die aktuelle scikit-learn-Implementierung von DBSCAN.

Cluster werden dann aus der Clusterreihenfolge mittels einer DBSCAN-ähnlichen Methode (cluster_method = ‘dbscan’) oder einer automatischen Technik, die in [1] vorgeschlagen wurde (cluster_method = ‘xi’), extrahiert.

Diese Implementierung weicht vom ursprünglichen OPTICS ab, indem sie zuerst k-nächste-Nachbarschaftssuchen an allen Punkten durchführt, um die Kernpunktgrößen aller Punkte zu identifizieren (anstatt Nachbarn während der Schleife durch Punkte zu berechnen). Dann werden Erreichbarkeitsabstände zu nur unverarbeiteten Punkten berechnet, um die Clusterreihenfolge zu konstruieren, ähnlich dem ursprünglichen OPTICS. Beachten Sie, dass wir keinen Heap zur Verwaltung der Erweiterungskandidaten verwenden, sodass die Zeitkomplexität O(n^2) beträgt.

Lesen Sie mehr im Benutzerhandbuch.

Parameter:
min_samplesint > 1 oder float zwischen 0 und 1, default=5

Die Anzahl der Stichproben in einer Nachbarschaft, damit ein Punkt als Kernpunkt betrachtet wird. Außerdem dürfen auf- und absteigende steile Regionen nicht mehr als min_samples aufeinanderfolgende nicht-steile Punkte enthalten. Ausgedrückt als absolute Zahl oder als Bruchteil der Anzahl der Stichproben (auf mindestens 2 gerundet).

max_epsfloat, default=np.inf

Der maximale Abstand zwischen zwei Stichproben, damit eine als Nachbar der anderen betrachtet wird. Der Standardwert von np.inf identifiziert Cluster über alle Skalen hinweg; eine Reduzierung von max_eps führt zu kürzeren Laufzeiten.

metricstr oder aufrufbar, Standard=’minkowski’

Metrik, die zur Distanzberechnung verwendet werden soll. Jede Metrik von scikit-learn oder scipy.spatial.distance kann verwendet werden.

Wenn metric eine aufrufbare Funktion ist, wird sie für jedes Paar von Instanzen (Zeilen) aufgerufen und der resultierende Wert aufgezeichnet. Die aufrufbare Funktion sollte zwei Arrays als Eingabe nehmen und einen Wert zurückgeben, der den Abstand zwischen ihnen angibt. Dies funktioniert für Scipy-Metriken, ist aber weniger effizient als die Angabe der Metrik als Zeichenkette. Wenn metric = „precomputed“ ist, wird angenommen, dass X eine Distanzmatrix ist und quadratisch sein muss.

Gültige Werte für metric sind

  • aus scikit-learn: [‘cityblock’, ‘cosine’, ‘euclidean’, ‘l1’, ‘l2’, ‘manhattan’]

  • aus scipy.spatial.distance: [‘braycurtis’, ‘canberra’, ‘chebyshev’, ‘correlation’, ‘dice’, ‘hamming’, ‘jaccard’, ‘kulsinski’, ‘mahalanobis’, ‘minkowski’, ‘rogerstanimoto’, ‘russellrao’, ‘seuclidean’, ‘sokalmichener’, ‘sokalsneath’, ‘sqeuclidean’, ‘yule’]

Sparse Matrizen werden nur von scikit-learn-Metriken unterstützt. Einzelheiten zu diesen Metriken finden Sie unter scipy.spatial.distance.

Hinweis

'kulsinski' ist seit SciPy 1.9 veraltet und wird in SciPy 1.11 entfernt.

pfloat, Standard=2

Parameter für die Minkowski-Metrik aus pairwise_distances. Wenn p = 1, ist dies äquivalent zur Verwendung von manhattan_distance (l1) und euclidean_distance (l2) für p = 2. Für beliebiges p wird minkowski_distance (l_p) verwendet.

metric_paramsdict, Standard=None

Zusätzliche Schlüsselwortargumente für die Metrikfunktion.

cluster_method{‘xi’, ‘dbscan’}, default=’xi’

Die Extraktionsmethode, die zur Extraktion von Clustern unter Verwendung der berechneten Erreichbarkeit und Ordnung verwendet wird.

epsfloat, default=None

Der maximale Abstand zwischen zwei Stichproben, damit eine als Nachbar der anderen betrachtet wird. Standardmäßig wird derselbe Wert wie max_eps angenommen. Wird nur verwendet, wenn cluster_method='dbscan'.

xifloat zwischen 0 und 1, default=0.05

Bestimmt die minimale Steilheit im Erreichbarkeitsdiagramm, die eine Clustergrenze darstellt. Zum Beispiel wird ein aufsteigender Punkt im Erreichbarkeitsdiagramm durch das Verhältnis von einem Punkt zu seinem Nachfolger definiert, das höchstens 1-xi beträgt. Wird nur verwendet, wenn cluster_method='xi'.

predecessor_correctionbool, default=True

Korrigiert Cluster gemäß den von OPTICS berechneten Vorgängern [2]. Dieser Parameter hat nur geringe Auswirkungen auf die meisten Datensätze. Wird nur verwendet, wenn cluster_method='xi'.

min_cluster_sizeint > 1 oder float zwischen 0 und 1, default=None

Minimale Anzahl von Stichproben in einem OPTICS-Cluster, ausgedrückt als absolute Zahl oder als Bruchteil der Anzahl der Stichproben (auf mindestens 2 gerundet). Wenn None, wird stattdessen der Wert von min_samples verwendet. Wird nur verwendet, wenn cluster_method='xi'.

algorithm{‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’}, Standard=’auto’

Algorithmus zur Berechnung der nächsten Nachbarn

  • „ball_tree“ verwendet BallTree.

  • „kd_tree“ verwendet KDTree.

  • ‘brute’ verwendet eine brute-force Suche.

  • „auto“ (Standard) versucht, den am besten geeigneten Algorithmus basierend auf den an die fit-Methode übergebenen Werten zu bestimmen.

Hinweis: Das Anpassen an dünnbesetzte Eingaben überschreibt die Einstellung dieses Parameters und verwendet brute force.

leaf_sizeint, Standard=30

Leaf-Größe, die an BallTree oder KDTree übergeben wird. Dies kann die Geschwindigkeit des Aufbaus und der Abfrage sowie den Speicherbedarf für den Baum beeinflussen. Der optimale Wert hängt von der Art des Problems ab.

memoryString oder Objekt mit dem joblib.Memory-Interface, Standard=None

Wird verwendet, um die Ausgabe der Berechnung des Baumes zu cachen. Standardmäßig erfolgt kein Caching. Wenn ein String angegeben wird, ist dies der Pfad zum Cache-Verzeichnis.

n_jobsint, default=None

Die Anzahl der parallelen Jobs für die Nachbarsuche. None bedeutet 1, es sei denn, es befindet sich in einem joblib.parallel_backend Kontext. -1 bedeutet, alle Prozessoren zu verwenden. Siehe Glossar für weitere Details.

Attribute:
labels_ndarray der Form (n_samples,)

Cluster-Labels für jeden Punkt im Datensatz, der an fit() übergeben wurde. Rauschhafte Stichproben und Punkte, die nicht in einem Blattcluster von cluster_hierarchy_ enthalten sind, werden als -1 markiert.

reachability_ndarray der Form (n_samples,)

Erreichbarkeitsabstände pro Stichprobe, indiziert nach Objektordnung. Verwenden Sie clust.reachability_[clust.ordering_], um im Cluster-Auftrag zuzugreifen.

ordering_ndarray der Form (n_samples,)

Die nach Clustern geordnete Liste der Stichprobenindizes.

core_distances_ndarray der Form (n_samples,)

Abstand, bei dem jede Stichprobe zu einem Kernpunkt wird, indiziert nach Objektordnung. Punkte, die niemals Kernpunkte werden, haben einen Abstand von inf. Verwenden Sie clust.core_distances_[clust.ordering_], um im Cluster-Auftrag zuzugreifen.

predecessor_ndarray der Form (n_samples,)

Punkt, von dem eine Stichprobe erreicht wurde, indiziert nach Objektordnung. Startpunkte haben einen Vorgänger von -1.

cluster_hierarchy_ndarray der Form (n_clusters, 2)

Die Liste der Cluster in der Form [start, end] in jeder Zeile, wobei alle Indizes inklusive sind. Die Cluster sind nach (end, -start) (aufsteigend) geordnet, sodass größere Cluster, die kleinere umfassen, nach diesen kleineren kommen. Da labels_ die Hierarchie nicht widerspiegelt, ist normalerweise len(cluster_hierarchy_) > np.unique(optics.labels_). Bitte beachten Sie auch, dass diese Indizes sich auf ordering_ beziehen, d.h. X[ordering_][start:end + 1] bilden einen Cluster. Nur verfügbar, wenn cluster_method='xi'.

n_features_in_int

Anzahl der während des fits gesehenen Merkmale.

Hinzugefügt in Version 0.24.

feature_names_in_ndarray mit Form (n_features_in_,)

Namen der während fit gesehenen Merkmale. Nur definiert, wenn X Merkmalnamen hat, die alle Zeichenketten sind.

Hinzugefügt in Version 1.0.

Siehe auch

DBSCAN

Eine ähnliche Clusterbildung für einen bestimmten Nachbarschaftsradius (eps). Unsere Implementierung ist auf Laufzeit optimiert.

Referenzen

[1] (1,2)

Ankerst, Mihael, Markus M. Breunig, Hans-Peter Kriegel und Jörg Sander. „OPTICS: ordering points to identify the clustering structure.“ ACM SIGMOD Record 28, Nr. 2 (1999): 49-60.

[2]

Schubert, Erich, Michael Gertz. „Improving the Cluster Structure Extracted from OPTICS Plots.“ Proc. of the Conference “Lernen, Wissen, Daten, Analysen” (LWDA) (2018): 318-329.

Beispiele

>>> from sklearn.cluster import OPTICS
>>> import numpy as np
>>> X = np.array([[1, 2], [2, 5], [3, 6],
...               [8, 7], [8, 8], [7, 3]])
>>> clustering = OPTICS(min_samples=2).fit(X)
>>> clustering.labels_
array([0, 0, 0, 1, 1, 1])

Ein detaillierteres Beispiel finden Sie in Demo des OPTICS-Clustering-Algorithmus.

Ein Vergleich von OPTICS mit anderen Clustering-Algorithmen finden Sie in Vergleich verschiedener Clustering-Algorithmen auf Beispiel-Datensätzen

fit(X, y=None)[Quelle]#

Führt OPTICS-Clustering durch.

Extrahiert eine geordnete Liste von Punkten und Erreichbarkeitsabstände und führt eine anfängliche Clusterbildung mit einem Abstand von max_eps durch, der bei der Instanziierung des OPTICS-Objekts angegeben wurde.

Parameter:
X{ndarray, sparse matrix} der Form (n_samples, n_features), oder (n_samples, n_samples), wenn metric=’precomputed’

Ein Merkmalsarray oder ein Array von Abständen zwischen Stichproben, wenn metric=’precomputed’ ist. Wenn eine Sparse-Matrix angegeben wird, wird sie in das CSR-Format konvertiert.

yIgnoriert

Wird nicht verwendet, ist aber aus Gründen der API-Konsistenz per Konvention vorhanden.

Gibt zurück:
selfobject

Gibt eine angepasste Instanz von self zurück.

fit_predict(X, y=None, **kwargs)[Quelle]#

Führt Clustering auf X durch und gibt Cluster-Labels zurück.

Parameter:
Xarray-like der Form (n_samples, n_features)

Eingabedaten.

yIgnoriert

Wird nicht verwendet, ist aber aus Gründen der API-Konsistenz per Konvention vorhanden.

**kwargsdict

Argumente, die an fit übergeben werden sollen.

Hinzugefügt in Version 1.4.

Gibt zurück:
labelsndarray der Form (n_samples,), dtype=np.int64

Clusterbeschriftungen.

get_metadata_routing()[Quelle]#

Holt das Metadaten-Routing dieses Objekts.

Bitte prüfen Sie im Benutzerhandbuch, wie der Routing-Mechanismus funktioniert.

Gibt zurück:
routingMetadataRequest

Ein MetadataRequest, der Routing-Informationen kapselt.

get_params(deep=True)[Quelle]#

Holt Parameter für diesen Schätzer.

Parameter:
deepbool, default=True

Wenn True, werden die Parameter für diesen Schätzer und die enthaltenen Unterobjekte, die Schätzer sind, zurückgegeben.

Gibt zurück:
paramsdict

Parameternamen, zugeordnet ihren Werten.

set_params(**params)[Quelle]#

Setzt die Parameter dieses Schätzers.

Die Methode funktioniert sowohl bei einfachen Schätzern als auch bei verschachtelten Objekten (wie Pipeline). Letztere haben Parameter der Form <component>__<parameter>, so dass es möglich ist, jede Komponente eines verschachtelten Objekts zu aktualisieren.

Parameter:
**paramsdict

Schätzer-Parameter.

Gibt zurück:
selfestimator instance

Schätzer-Instanz.