LocalOutlierFactor
- classsklearn.neighbors.LocalOutlierFactor(n_neighbors=20, *, algorithm='auto', leaf_size=30, metric='minkowski', p=2, metric_params=None, contamination='auto', novelty=False, n_jobs=None)[исходный код]
-
Обнаружение выбросов без учителя с помощью локального фактора выброса (LOF).
Оценка аномальности каждого образца называется локальным фактором выброса. Она измеряет локальное отклонение плотности заданного образца относительно его соседей. Эта оценка является локальной, поскольку зависит от степени изолированности объекта относительно окружающего его соседства. Точнее, локальность определяется k ближайшими соседями, расстояние до которых используется для оценки локальной плотности. Сравнивая локальную плотность образца с локальной плотностью его соседей, можно выявить образцы, плотность которых существенно ниже плотности соседей. Такие образцы считаются выбросами.
Подробнее см. в Руководстве пользователя.
Добавлено в версии 0.19.
- Параметры:
-
- n_neighborsint, по умолчанию=20
-
Количество соседей, используемых по умолчанию для запросов
kneighbors. Если n_neighbors больше числа переданных образцов, будут использоваться все образцы. - algorithm{‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’}, по умолчанию=’auto’
-
Алгоритм, используемый для поиска ближайших соседей:
- ‘ball_tree’ использует
BallTree - ‘kd_tree’ использует
KDTree - ‘brute’ использует полный перебор.
- ‘auto’ пытается выбрать наиболее подходящий алгоритм на основе значений, переданных методу
fit.
Примечание: при обучении на разреженных данных значение этого параметра будет переопределено — будет использоваться полный перебор.
- ‘ball_tree’ использует
- leaf_sizeint, по умолчанию=30
-
Размер листа, передаваемый в
BallTreeилиKDTree. Этот параметр может влиять на скорость построения дерева и выполнения запросов, а также на объем памяти, необходимый для его хранения. Оптимальное значение зависит от особенностей задачи. - metricstr или вызываемый объект, по умолчанию=’minkowski’
-
Метрика, используемая для вычисления расстояний. По умолчанию используется “minkowski”, которая при p = 2 соответствует стандартному евклидову расстоянию. Допустимые значения метрики см. в документации scipy.spatial.distance и в списке метрик
distance_metrics.Если metric имеет значение “precomputed”, предполагается, что X — это матрица расстояний, которая при обучении должна быть квадратной. X может быть разреженным графом; в этом случае соседями могут считаться только элементы, отличные от нуля.
Если metric — вызываемая функция, она принимает на вход два массива, представляющих одномерные векторы, и должна возвращать одно значение, указывающее расстояние между этими векторами. Такой вариант работает с метриками SciPy, но менее эффективен, чем передача названия метрики в виде строки.
- pfloat, по умолчанию=2
-
Параметр метрики Минковского из
sklearn.metrics.pairwise_distances. При p = 1 это эквивалентно использованию manhattan_distance (l1), а при p = 2 — euclidean_distance (l2). Для произвольного p используется minkowski_distance (l_p). - metric_paramsdict, по умолчанию=None
-
Дополнительные именованные аргументы для функции метрики.
- contamination‘auto’ или float, по умолчанию=’auto’
-
Доля загрязнения набора данных, то есть доля выбросов в наборе данных. При обучении это значение используется для определения порога оценок образцов.
- если задано ‘auto’, порог определяется так же, как в исходной статье;
- если задано число с плавающей точкой, contamination должно находиться в диапазоне (0, 0.5].
Изменено в версии 0.22: значение по умолчанию для
contaminationизменено с 0.1 на'auto'. - noveltybool, по умолчанию=False
-
По умолчанию LocalOutlierFactor предназначен только для обнаружения выбросов (novelty=False). Установите novelty в True, если хотите использовать LocalOutlierFactor для обнаружения новых объектов. В этом случае используйте predict, decision_function и score_samples только для новых, ранее не встречавшихся данных, а не для обучающей выборки; обратите внимание, что полученные таким способом результаты могут отличаться от стандартных результатов LOF.
Добавлено в версии 0.20.
- n_jobsint, по умолчанию=None
-
Количество параллельных задач для поиска соседей.
Noneозначает 1, если только не используется контекстjoblib.parallel_backend.-1означает использование всех процессоров. Дополнительные сведения см. в глоссарии.
- Атрибуты:
-
- negative_outlier_factor_ndarray формы (n_samples,)
-
Противоположное значение LOF для обучающих образцов. Чем оно выше, тем образец нормальнее. Для внутренних точек оценка LOF обычно близка к 1 (
negative_outlier_factor_близка к -1), тогда как для выбросов она, как правило, выше.Локальный фактор выброса (LOF) образца отражает его предполагаемую «степень аномальности». Он представляет собой среднее отношение локальной плотности достижимости образца к локальным плотностям его k ближайших соседей.
- n_neighbors_int
-
Фактическое количество соседей, использованных для запросов
kneighbors. - offset_float
-
Смещение, используемое для получения двоичных меток из исходных оценок. Наблюдения, у которых negative_outlier_factor меньше
offset_, считаются аномальными. Смещение установлено в -1.5 (оценка внутренних точек близка к -1), кроме случаев, когда параметру contamination задано значение, отличное от “auto”. В этом случае смещение определяется таким образом, чтобы получить ожидаемое количество выбросов в обучающей выборке.Добавлено в версии 0.20.
- effective_metric_str
-
Фактически используемая метрика для вычисления расстояний.
- effective_metric_params_dict
-
Фактически используемые дополнительные именованные аргументы для функции метрики.
- n_features_in_int
-
Количество признаков, обнаруженных во время обучения.
Добавлено в версии 0.24.
-
feature_names_in_ndarray формы (
n_features_in_,) -
Названия признаков, обнаруженные во время обучения. Определяется только в том случае, если
Xсодержит названия признаков, все из которых являются строками.Добавлено в версии 1.0.
- n_samples_fit_int
-
Количество образцов в данных, использованных при обучении.
См. также
sklearn.svm.OneClassSVM-
Обнаружение выбросов без учителя с помощью метода опорных векторов.
Источники
[1]Breunig, M. M., Kriegel, H. P., Ng, R. T., & Sander, J. (2000, May). LOF: выявление локальных выбросов на основе плотности. В сборнике трудов Международной конференции ACM SIGMOD 2000 года по управлению данными, с. 93–104.
Примеры
>>> 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)[исходный код]
-
Смещенное противоположное значение локального фактора выброса для X.
Чем значение больше, тем лучше: большие значения соответствуют внутренним точкам.
Доступно только для обнаружения новых объектов (когда novelty имеет значение True). Смещение позволяет использовать нулевой порог для определения выбросов. Предполагается, что аргумент X содержит новые данные: если X содержит точку из обучающей выборки, она учитывается как принадлежащая ее собственному соседству. Кроме того, образцы из X не включаются в соседство ни одной точки.
- Параметры:
-
- X{массивоподобный объект, разреженная матрица} формы (n_samples, n_features)
-
Запрашиваемый образец или образцы, для которых вычисляется локальный фактор выброса относительно обучающих образцов.
- Возвращает:
-
- shifted_opposite_lof_scoresndarray формы (n_samples,)
-
Смещенное противоположное значение локального фактора выброса для каждого входного образца. Чем значение ниже, тем образец аномальнее. Отрицательные оценки соответствуют выбросам, положительные — внутренним точкам.
- fit(X, y=None)[исходный код]
-
Обучить детектор локального фактора выброса на обучающем наборе данных.
- Параметры:
-
- X{массивоподобный объект, разреженная матрица} формы (n_samples, n_features) или (n_samples, n_samples), если metric=’precomputed’
-
Обучающие данные.
- yИгнорируется
-
Не используется; предусмотрен для согласованности API согласно соглашению.
- Возвращает:
-
- selfLocalOutlierFactor
-
Обученный детектор локального фактора выброса.
- fit_predict(X, y=None)[исходный код]
-
Обучить модель на обучающем наборе X и вернуть метки.
Недоступно для обнаружения новых объектов (когда novelty имеет значение True). Метка 1 обозначает внутреннюю точку, а -1 — выброс согласно оценке LOF и параметру contamination.
- Параметры:
-
- X{массивоподобный объект, разреженная матрица} формы (n_samples, n_features), по умолчанию=None
-
Запрашиваемый образец или образцы, для которых вычисляется локальный фактор выброса относительно обучающих образцов.
- yИгнорируется
-
Не используется; предусмотрен для согласованности API согласно соглашению.
- Возвращает:
-
- is_inlierndarray формы (n_samples,)
-
Возвращает -1 для аномалий/выбросов и 1 для внутренних точек.
- get_metadata_routing()[исходный код]
-
Получить сведения о маршрутизации метаданных этого объекта.
Ознакомьтесь с Руководством пользователя, чтобы узнать, как работает механизм маршрутизации.
- Возвращает:
-
- routingMetadataRequest
-
Объект
MetadataRequest, содержащий сведения о маршрутизации.
- get_params(deep=True)[исходный код]
-
Получить параметры этого оценщика.
- Параметры:
-
- deepbool, по умолчанию=True
-
Если True, будут возвращены параметры этого оценщика и содержащихся в нем подобъектов, которые являются оценщиками.
- Возвращает:
-
- paramsdict
-
Имена параметров, сопоставленные с их значениями.
- kneighbors(X=None, n_neighbors=None, return_distance=True)[исходный код]
-
Найти K ближайших соседей точки.
Возвращает индексы соседей каждой точки и расстояния до них.
- Параметры:
-
- X{массивоподобный объект, разреженная матрица}, форма (n_queries, n_features) или (n_queries, n_indexed), если metric == ‘precomputed’, по умолчанию=None
-
Запрашиваемая точка или точки. Если не указаны, возвращаются соседи каждой индексированной точки. В этом случае запрашиваемая точка не считается своим собственным соседом.
- n_neighborsint, по умолчанию=None
-
Количество соседей, требуемое для каждого образца. По умолчанию используется значение, переданное конструктору.
- return_distancebool, по умолчанию=True
-
Возвращать ли расстояния.
- Возвращает:
-
- neigh_distndarray формы (n_queries, n_neighbors)
-
Массив с расстояниями до точек; присутствует только при return_distance=True.
- neigh_indndarray формы (n_queries, n_neighbors)
-
Индексы ближайших точек в матрице популяции.
Примеры
В следующем примере мы создаем класс NearestNeighbors на основе массива, представляющего наш набор данных, и запрашиваем ближайшую к [1,1,1] точку.
>>> 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]]))
Как видно, возвращаются [[0.5]] и [[2]], то есть расстояние до элемента равно 0.5, а сам он является третьим элементом samples (индексация начинается с 0). Можно также выполнить запрос сразу для нескольких точек:
>>> 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')[исходный код]
-
Вычислить (взвешенный) граф k ближайших соседей для точек X.
- Параметры:
-
- X{массивоподобный объект, разреженная матрица} формы (n_queries, n_features) или (n_queries, n_indexed), если metric == ‘precomputed’, по умолчанию=None
-
Запрашиваемая точка или точки. Если не указаны, возвращаются соседи каждой индексированной точки. В этом случае запрашиваемая точка не считается своим собственным соседом. Для
metric='precomputed'форма должна быть (n_queries, n_indexed). В противном случае форма должна быть (n_queries, n_features). - n_neighborsint, по умолчанию=None
-
Количество соседей для каждого образца. По умолчанию используется значение, переданное конструктору.
- mode{‘connectivity’, ‘distance’}, по умолчанию=’connectivity’
-
Тип возвращаемой матрицы: ‘connectivity’ возвращает матрицу связности с единицами и нулями, а в режиме ‘distance’ ребрами являются расстояния между точками; тип расстояния зависит от параметра метрики, выбранного в классе NearestNeighbors.
- Возвращает:
-
- Aразреженная матрица формы (n_queries, n_samples_fit)
-
n_samples_fit— количество образцов в данных, использованных при обучении.A[i, j]задает вес ребра, соединяющегоiиj. Матрица имеет формат CSR.
См. также
NearestNeighbors.radius_neighbors_graph-
Вычислить (взвешенный) граф соседей для точек X.
Примеры
>>> 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)[исходный код]
-
Предсказать метки X (1 — внутренняя точка, -1 — выброс) согласно LOF.
Доступно только для обнаружения новых объектов (когда novelty имеет значение True). Этот метод позволяет обобщить предсказание на новые наблюдения (не входящие в обучающую выборку). Обратите внимание, что результат
clf.fit(X)при этомclf.predict(X)с помощьюnovelty=Trueможет отличаться от результата, полученного с помощьюclf.fit_predict(X)с помощьюnovelty=False.- Параметры:
-
- X{массивоподобный объект, разреженная матрица} формы (n_samples, n_features)
-
Запрашиваемый образец или образцы, для которых вычисляется локальный фактор выброса относительно обучающих образцов.
- Возвращает:
-
- is_inlierndarray формы (n_samples,)
-
Возвращает -1 для аномалий/выбросов и +1 для внутренних точек.
- score_samples(X)[исходный код]
-
Противоположное значение локального фактора выброса для X.
Значение противоположно LOF, поскольку чем оно больше, тем лучше: большие значения соответствуют внутренним точкам.
Доступно только для обнаружения новых объектов (когда novelty имеет значение True). Предполагается, что аргумент X содержит новые данные: если X содержит точку из обучающей выборки, она учитывается как принадлежащая ее собственному соседству. Кроме того, образцы из X не включаются в соседство ни одной точки. Поэтому оценки, полученные с помощью
score_samples, могут отличаться от стандартных оценок LOF. Стандартные оценки LOF для обучающих данных доступны через атрибутnegative_outlier_factor_.- Параметры:
-
- X{массивоподобный объект, разреженная матрица} формы (n_samples, n_features)
-
Запрашиваемый образец или образцы, для которых вычисляется локальный фактор выброса относительно обучающих образцов.
- Возвращает:
-
- opposite_lof_scoresndarray формы (n_samples,)
-
Противоположное значение локального фактора выброса для каждого входного образца. Чем значение ниже, тем образец аномальнее.
- set_params(**params)[исходный код]
-
Задать параметры этого оценщика.
Метод работает как с простыми оценщиками, так и с вложенными объектами (например,
Pipeline). Параметры последних имеют вид<component>__<parameter>, что позволяет обновлять каждый компонент вложенного объекта.- Параметры:
-
- **paramsdict
-
Параметры оценщика.
- Возвращает:
-
- selfэкземпляр оценщика
-
Экземпляр оценщика.
Примеры из галереи
© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.neighbors.LocalOutlierFactor.html