LocalOutlierFactor#
- class sklearn.neighbors.LocalOutlierFactor(n_neighbors=20, *, algorithm='auto', leaf_size=30, metric='minkowski', p=2, metric_params=None, contamination='auto', novelty=False, n_jobs=None)[Quelle]#
Unüberwachte Ausreißererkennung mittels Local Outlier Factor (LOF).
Der Anomalie-Score jedes Samples wird als Local Outlier Factor bezeichnet. Er misst die lokale Abweichung der Dichte eines gegebenen Samples im Verhältnis zu seinen Nachbarn. Er ist lokal, da der Anomalie-Score davon abhängt, wie isoliert das Objekt im Verhältnis zur umgebenden Nachbarschaft ist. Genauer gesagt, wird die Lokalität durch die k-nächsten Nachbarn gegeben, deren Distanz zur Schätzung der lokalen Dichte verwendet wird. Durch den Vergleich der lokalen Dichte eines Samples mit den lokalen Dichten seiner Nachbarn kann man Samples identifizieren, die eine wesentlich geringere Dichte als ihre Nachbarn aufweisen. Diese werden als Ausreißer betrachtet.
Hinzugefügt in Version 0.19.
- Parameter:
- n_neighborsint, default=20
Anzahl der Nachbarn, die standardmäßig für
kneighbors-Abfragen verwendet werden. Wenn n_neighbors größer ist als die Anzahl der bereitgestellten Samples, werden alle Samples verwendet.- 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“ versucht, den am besten geeigneten Algorithmus basierend auf den an die
fit-Methode übergebenen Werten zu ermitteln.
Hinweis: Das Anpassen an dünnbesetzte Eingaben überschreibt die Einstellung dieses Parameters und verwendet brute force.
- leaf_sizeint, Standard=30
Leaf ist die Größe, die an
BallTreeoderKDTreeübergeben wird. Dies kann die Geschwindigkeit des Aufbaus und der Abfrage sowie den Speicherbedarf für die Speicherung des Baumes beeinflussen. Der optimale Wert hängt von der Art des Problems ab.- metricstr oder aufrufbar, Standard=’minkowski’
Metrik zur Entfernungsberechnung. Standard ist „minkowski“, was bei p = 2 zur Standard-Euklidischen Distanz führt. Siehe die Dokumentation von scipy.spatial.distance und die unter
distance_metricsaufgeführten Metriken für gültige Metrikwerte.Wenn metric “precomputed” ist, wird davon ausgegangen, dass X eine Distanzmatrix ist und während des Anlernens quadratisch sein muss. X kann ein dünnbesetzter Graph sein, in diesem Fall können nur “nonzero” Elemente als Nachbarn betrachtet werden.
Wenn metric eine aufrufbare Funktion ist, nimmt sie zwei Arrays entgegen, die 1D-Vektoren darstellen, und muss einen Wert zurückgeben, der die Entfernung zwischen diesen Vektoren angibt. Dies funktioniert für Scipys Metriken, ist aber weniger effizient als die Übergabe des Metriknamens als String.
- pfloat, Standard=2
Parameter für die Minkowski-Metrik von
sklearn.metrics.pairwise_distances. Wenn p = 1, ist dies äquivalent zur Verwendung der Manhattan-Distanz (l1) und für p = 2 der euklidischen Distanz (l2). Für beliebiges p wird die Minkowski-Distanz (l_p) verwendet.- metric_paramsdict, Standard=None
Zusätzliche Schlüsselwortargumente für die Metrikfunktion.
- contamination‘auto’ oder float, default=’auto’
Der Anteil der Kontamination des Datensatzes, d.h. der Anteil der Ausreißer im Datensatz. Beim Trainieren wird dies verwendet, um den Schwellenwert für die Scores der Samples zu definieren.
Wenn „auto“, wird der Schwellenwert wie im Originalpapier bestimmt.
Wenn ein Float, sollte die Kontamination im Bereich (0, 0.5] liegen.
Geändert in Version 0.22: Der Standardwert von
contaminationwurde von 0.1 auf'auto'geändert.- noveltybool, default=False
Standardmäßig ist LocalOutlierFactor nur zur Erkennung von Ausreißern gedacht (novelty=False). Setzen Sie novelty auf True, wenn Sie LocalOutlierFactor zur Erkennung von Neuheiten verwenden möchten. In diesem Fall beachten Sie, dass Sie predict, decision_function und score_samples nur auf neuen, ungesehenen Daten und nicht auf dem Trainingsset verwenden sollten; und beachten Sie, dass die auf diese Weise erzielten Ergebnisse von den Standard-LOF-Ergebnissen abweichen können.
Hinzugefügt in Version 0.20.
- n_jobsint, default=None
Die Anzahl der parallelen Jobs für die Nachbarsuche.
Nonebedeutet 1, es sei denn, es befindet sich in einemjoblib.parallel_backendKontext.-1bedeutet, alle Prozessoren zu verwenden. Siehe Glossar für weitere Details.
- Attribute:
- negative_outlier_factor_ndarray von Form (n_samples,)
Der entgegengesetzte LOF der Trainingssamples. Je höher, desto normaler. Inlier haben tendenziell einen LOF-Score nahe 1 (
negative_outlier_factor_nahe -1), während Ausreißer tendenziell einen größeren LOF-Score haben.Der lokale Ausreißerfaktor (LOF) eines Samples erfasst seinen angeblichen „Grad der Abnormität“. Er ist der Durchschnitt des Verhältnisses der lokalen Erreichbarkeitsdichte eines Samples zu denen seiner k-nächsten Nachbarn.
- n_neighbors_int
Die tatsächliche Anzahl der Nachbarn, die für
kneighbors-Abfragen verwendet werden.- offset_float
Offset, der verwendet wird, um binäre Labels aus den Rohscores zu erhalten. Beobachtungen mit einem negative_outlier_factor kleiner als
offset_werden als abnormal erkannt. Der Offset wird auf -1,5 gesetzt (Inlier-Score um -1), außer wenn ein Kontaminationsparameter ungleich „auto“ angegeben wird. In diesem Fall wird der Offset so definiert, dass die erwartete Anzahl von Ausreißern im Training erzielt wird.Hinzugefügt in Version 0.20.
- effective_metric_str
Die effektive Metrik, die für die Distanzberechnung verwendet wird.
- effective_metric_params_dict
Die effektiven zusätzlichen Schlüsselwortargumente für die Metrikfunktion.
- 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
XMerkmalnamen hat, die alle Zeichenketten sind.Hinzugefügt in Version 1.0.
- n_samples_fit_int
Die Anzahl der Samples in den trainierten Daten.
Siehe auch
sklearn.svm.OneClassSVMUnüberwachte Ausreißererkennung mittels Support Vector Machine.
Referenzen
[1]Breunig, M. M., Kriegel, H. P., Ng, R. T., & Sander, J. (2000, Mai). LOF: identifying density-based local outliers. In Proceedings of the 2000 ACM SIGMOD International Conference on Management of Data, pp. 93-104.
Beispiele
>>> import numpy as np >>> from sklearn.neighbors import LocalOutlierFactor >>> X = [[-1.1], [0.2], [101.1], [0.3]] >>> clf = LocalOutlierFactor(n_neighbors=2) >>> clf.fit_predict(X) array([ 1, 1, -1, 1]) >>> clf.negative_outlier_factor_ array([ -0.9821, -1.0370, -73.3697, -0.9821])
- decision_function(X)[Quelle]#
Verschobener Gegensatz zum Local Outlier Factor von X.
Größer ist besser, d.h. große Werte entsprechen Inliern.
Nur verfügbar für Neuheitserkennung (wenn novelty auf True gesetzt ist). Der Versatz ermöglicht einen Schwellenwert von Null für das Ausreißersein. Das Argument X soll *neue Daten* enthalten: Wenn X einen Punkt aus den Trainingsdaten enthält, betrachtet es diesen als seinen eigenen Nachbarn. Außerdem werden die Samples in X nicht als Nachbarn irgendeines Punkts betrachtet.
- Parameter:
- X{array-like, sparse matrix} der Form (n_samples, n_features)
Der/die abzufragende Sample(s), für den/die der Local Outlier Factor im Verhältnis zu den Trainingssamples berechnet werden soll.
- Gibt zurück:
- shifted_opposite_lof_scoresndarray von Form (n_samples,)
Der verschobene Gegensatz zum Local Outlier Factor jedes Eingabesamples. Je niedriger, desto abörmer. Negative Scores repräsentieren Ausreißer, positive Scores repräsentieren Inlier.
- fit(X, y=None)[Quelle]#
Trainiert den Local Outlier Factor Detektor mit dem Trainingsdatensatz.
- Parameter:
- X{array-like, sparse matrix} der Form (n_samples, n_features) oder (n_samples, n_samples), wenn metric=’precomputed’
Trainingsdaten.
- yIgnoriert
Wird nicht verwendet, ist aber aus Gründen der API-Konsistenz per Konvention vorhanden.
- Gibt zurück:
- selfLocalOutlierFactor
Der trainierte Local Outlier Factor Detektor.
- fit_predict(X, y=None)[Quelle]#
Trainiert das Modell mit den Trainingsdaten X und gibt die Labels zurück.
Nicht verfügbar für Neuheitserkennung (wenn novelty auf True gesetzt ist). Label ist 1 für einen Inlier und -1 für einen Ausreißer gemäß dem LOF-Score und dem Kontaminationsparameter.
- Parameter:
- X{array-like, sparse matrix} von shape (n_samples, n_features), Standardwert=None
Der/die abzufragende Sample(s), für den/die der Local Outlier Factor im Verhältnis zu den Trainingssamples berechnet werden soll.
- yIgnoriert
Wird nicht verwendet, ist aber aus Gründen der API-Konsistenz per Konvention vorhanden.
- Gibt zurück:
- is_inlierndarray von Form (n_samples,)
Gibt -1 für Anomalien/Ausreißer und 1 für Inlier zurück.
- 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.
- kneighbors(X=None, n_neighbors=None, return_distance=True)[Quelle]#
Finde die K-Nachbarn eines Punktes.
Gibt Indizes von und Entfernungen zu den Nachbarn jedes Punktes zurück.
- Parameter:
- X{array-like, sparse matrix}, Form (n_queries, n_features) oder (n_queries, n_indexed), wenn metric == ‘precomputed’, Standard=None
Der Anfragepunkt oder die Anfragepunkte. Wenn nicht angegeben, werden die Nachbarn jedes indizierten Punktes zurückgegeben. In diesem Fall wird der Anfragepunkt nicht als sein eigener Nachbar betrachtet.
- n_neighborsint, Standard=None
Anzahl der für jede Stichprobe erforderlichen Nachbarn. Der Standardwert ist der Wert, der an den Konstruktor übergeben wurde.
- return_distancebool, Standard=True
Gibt zurück, ob die Entfernungen zurückgegeben werden sollen.
- Gibt zurück:
- neigh_distndarray der Form (n_queries, n_neighbors)
Array, das die Längen zu den Punkten darstellt, nur vorhanden, wenn return_distance=True.
- neigh_indndarray der Form (n_queries, n_neighbors)
Indizes der nächsten Punkte in der Populationsmatrix.
Beispiele
Im folgenden Beispiel konstruieren wir eine NearestNeighbors-Klasse aus einem Array, das unser Datensatz repräsentiert, und fragen, wer der nächste Punkt zu [1,1,1] ist.
>>> samples = [[0., 0., 0.], [0., .5, 0.], [1., 1., .5]] >>> from sklearn.neighbors import NearestNeighbors >>> neigh = NearestNeighbors(n_neighbors=1) >>> neigh.fit(samples) NearestNeighbors(n_neighbors=1) >>> print(neigh.kneighbors([[1., 1., 1.]])) (array([[0.5]]), array([[2]]))
Wie Sie sehen können, gibt es [[0.5]] und [[2]] zurück, was bedeutet, dass das Element in der Entfernung 0.5 liegt und das dritte Element von samples ist (Indizes beginnen bei 0). Sie können auch mehrere Punkte abfragen.
>>> X = [[0., 1., 0.], [1., 0., 1.]] >>> neigh.kneighbors(X, return_distance=False) array([[1], [2]]...)
- kneighbors_graph(X=None, n_neighbors=None, mode='connectivity')[Quelle]#
Berechnet den (gewichteten) Graphen von k-Nachbarn für Punkte in X.
- Parameter:
- X{array-like, sparse matrix} der Form (n_queries, n_features) oder (n_queries, n_indexed), wenn metric == ‘precomputed’, Standard=None
Der Anfragepunkt oder die Anfragepunkte. Wenn nicht angegeben, werden die Nachbarn jedes indizierten Punktes zurückgegeben. In diesem Fall wird der Anfragepunkt nicht als sein eigener Nachbar betrachtet. Für
metric='precomputed'sollte die Form (n_queries, n_indexed) sein. Andernfalls sollte die Form (n_queries, n_features) sein.- n_neighborsint, Standard=None
Anzahl der Nachbarn für jede Stichprobe. Der Standardwert ist der Wert, der an den Konstruktor übergeben wurde.
- mode{‘connectivity’, ‘distance’}, Standard=’connectivity’
Typ der zurückgegebenen Matrix: ‘connectivity’ gibt die Konnektivitätsmatrix mit Einsen und Nullen zurück, bei ‘distance’ sind die Kanten die Entfernungen zwischen den Punkten; die Art der Distanz hängt vom ausgewählten Metrikparameter in der NearestNeighbors-Klasse ab.
- Gibt zurück:
- Asparse-matrix der Form (n_queries, n_samples_fit)
n_samples_fitist die Anzahl der Samples in den angepassten Daten.A[i, j]gibt das Gewicht der Kante an, dieimitjverbindet. Die Matrix hat das CSR-Format.
Siehe auch
NearestNeighbors.radius_neighbors_graphBerechnet den (gewichteten) Graphen von Nachbarn für Punkte in X.
Beispiele
>>> X = [[0], [3], [1]] >>> from sklearn.neighbors import NearestNeighbors >>> neigh = NearestNeighbors(n_neighbors=2) >>> neigh.fit(X) NearestNeighbors(n_neighbors=2) >>> A = neigh.kneighbors_graph(X) >>> A.toarray() array([[1., 0., 1.], [0., 1., 1.], [1., 0., 1.]])
- predict(X=None)[Quelle]#
Gibt die Labels (1 Inlier, -1 Ausreißer) von X gemäß LOF zurück.
Nur verfügbar für Neuheitserkennung (wenn novelty auf True gesetzt ist). Diese Methode ermöglicht die Verallgemeinerung der Vorhersage auf *neue Beobachtungen* (nicht im Trainingsset enthalten). Beachten Sie, dass das Ergebnis von
clf.fit(X)dannclf.predict(X)mitnovelty=Truevom Ergebnis abweichen kann, das durchclf.fit_predict(X)mitnovelty=Falseerzielt wird.- Parameter:
- X{array-like, sparse matrix} der Form (n_samples, n_features)
Der/die abzufragende Sample(s), für den/die der Local Outlier Factor im Verhältnis zu den Trainingssamples berechnet werden soll.
- Gibt zurück:
- is_inlierndarray von Form (n_samples,)
Gibt -1 für Anomalien/Ausreißer und +1 für Inlier zurück.
- score_samples(X)[Quelle]#
Gegenteil des Local Outlier Factor von X.
Es ist das Gegenteil, da größer besser ist, d.h. große Werte entsprechen Inliern.
Nur verfügbar für Neuheitserkennung (wenn novelty auf True gesetzt ist). Das Argument X soll *neue Daten* enthalten: Wenn X einen Punkt aus den Trainingsdaten enthält, betrachtet es diesen als seinen eigenen Nachbarn. Außerdem werden die Samples in X nicht als Nachbarn irgendeines Punkts betrachtet. Aus diesem Grund können die Scores, die über
score_sampleserzielt werden, von den Standard-LOF-Scores abweichen. Die Standard-LOF-Scores für die Trainingsdaten sind über das Attributnegative_outlier_factor_verfügbar.- Parameter:
- X{array-like, sparse matrix} der Form (n_samples, n_features)
Der/die abzufragende Sample(s), für den/die der Local Outlier Factor im Verhältnis zu den Trainingssamples berechnet werden soll.
- Gibt zurück:
- opposite_lof_scoresndarray von Form (n_samples,)
Das Gegenteil des Local Outlier Factor jedes Eingabesamples. Je niedriger, desto abörmer.
- 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.
Galeriebeispiele#
Vergleich von Anomalieerkennungsalgorithmen zur Ausreißererkennung auf Toy-Datensätzen
Neuartigkeitserkennung mit Local Outlier Factor (LOF)