Detección de valores atípicos con LOF

Machine LearningMachine LearningBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

El algoritmo Local Outlier Factor (LOF) es un método de aprendizaje automático no supervisado que se utiliza para detectar anomalías en los datos. Calcula la desviación de densidad local de un punto de datos dado con respecto a sus vecinos y considera como valores atípicos las muestras que tienen una densidad sustancialmente menor que sus vecinos.

En este laboratorio, usaremos LOF para detectar valores atípicos en un conjunto de datos.

Consejos sobre la VM

Una vez finalizada la inicialización de la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.

A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.

Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/neighbors("Nearest Neighbors") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/neighbors -.-> lab-49201{{"Detección de valores atípicos con LOF"}} ml/sklearn -.-> lab-49201{{"Detección de valores atípicos con LOF"}} end

Importar bibliotecas

Importaremos numpy y matplotlib para la manipulación y visualización de datos respectivamente. También importaremos LocalOutlierFactor de sklearn.neighbors para la detección de valores atípicos.

import numpy as np
import matplotlib.pyplot as plt
from sklearn.neighbors import LocalOutlierFactor

Generar datos con valores atípicos

Generaremos un conjunto de datos de 120 puntos de datos con 100 valores normales y 20 valores atípicos. Luego graficaremos los datos para visualizar los valores atípicos.

np.random.seed(42)

X_inliers = 0.3 * np.random.randn(100, 2)
X_inliers = np.r_[X_inliers + 2, X_inliers - 2]
X_outliers = np.random.uniform(low=-4, high=4, size=(20, 2))
X = np.r_[X_inliers, X_outliers]

plt.scatter(X[:, 0], X[:, 1], color="k", s=3.0)
plt.axis("tight")
plt.xlim((-5, 5))
plt.ylim((-5, 5))
plt.xlabel("Data points")
plt.title("Data with Outliers")
plt.show()

Ajustar el modelo para la detección de valores atípicos

Usaremos LocalOutlierFactor para ajustar el modelo para la detección de valores atípicos y calcular las etiquetas predichas de las muestras de entrenamiento.

clf = LocalOutlierFactor(n_neighbors=20, contamination=0.1)
y_pred = clf.fit_predict(X)
X_scores = clf.negative_outlier_factor_

Graficar los resultados

Graficaremos los puntos de datos con círculos cuyo radio es proporcional a las puntuaciones de valores atípicos.

plt.scatter(X[:, 0], X[:, 1], color="k", s=3.0, label="Data points")
## plot circles with radius proportional to the outlier scores
radius = (X_scores.max() - X_scores) / (X_scores.max() - X_scores.min())
scatter = plt.scatter(
    X[:, 0],
    X[:, 1],
    s=1000 * radius,
    edgecolors="r",
    facecolors="none",
    label="Outlier scores",
)
plt.axis("tight")
plt.xlim((-5, 5))
plt.ylim((-5, 5))
plt.xlabel("Outlier Detection")
plt.legend(
    handler_map={scatter: HandlerPathCollection(update_func=update_legend_marker_size)}
)
plt.title("Local Outlier Factor (LOF)")
plt.show()

Resumen

En este laboratorio, hemos aprendido cómo usar Local Outlier Factor (LOF) para la detección de valores atípicos. Hemos generado un conjunto de datos con valores atípicos, ajustado el modelo para la detección de valores atípicos y graficado los resultados. LOF es un método de aprendizaje automático no supervisado poderoso que se puede usar para detectar anomalías en una amplia variedad de aplicaciones.