Spec-Zone.ru › scikit-learn

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.

Примечание: при обучении на разреженных данных значение этого параметра будет переопределено — будет использоваться полный перебор.

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экземпляр оценщика

Экземпляр оценщика.

Примеры из галереи

Сравнение алгоритмов обнаружения аномалий при поиске выбросов в простых наборах данных

Оценка алгоритмов обнаружения выбросов

Обнаружение новизны с помощью Local Outlier Factor (LOF)

Обнаружение выбросов с помощью Local Outlier Factor (LOF)

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API