Detección de valores atípicos en datos de vinos

Beginner

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

Introducción

En este laboratorio, realizaremos la detección de valores atípicos en un conjunto de datos real utilizando scikit-learn. La detección de valores atípicos es el proceso de identificar puntos de datos que difieren significativamente de la mayoría de los datos. Los valores atípicos pueden ser causados por errores de medición, corrupción de datos o simplemente representar un evento raro. La detección de valores atípicos es importante en muchas aplicaciones, como la detección de fraudes, la detección de intrusiones en redes y el diagnóstico médico.

Consejos sobre la VM

Una vez que se haya completado 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.

Importar bibliotecas y cargar el conjunto de datos

Comenzaremos importando las bibliotecas necesarias y cargando el conjunto de datos Wine de scikit-learn. El conjunto de datos Wine contiene información sobre diferentes tipos de vinos, incluyendo sus propiedades químicas.

import numpy as np
from sklearn.covariance import EllipticEnvelope
from sklearn.svm import OneClassSVM
import matplotlib.pyplot as plt
from sklearn.datasets import load_wine

## Cargar el conjunto de datos
X1 = load_wine()["data"][:, [1, 2]]  ## dos clusters
X2 = load_wine()["data"][:, [6, 9]]  ## en forma de "plátano"

Definir clasificadores y colores

Definiremos los clasificadores de detección de valores atípicos que utilizaremos en este laboratorio. También definiremos los colores que se utilizarán para graficar los resultados.

## Definir los "clasificadores" que se utilizarán
classifiers = {
    "Empirical Covariance": EllipticEnvelope(support_fraction=1.0, contamination=0.25),
    "Robust Covariance (Minimum Covariance Determinant)": EllipticEnvelope(
        contamination=0.25
    ),
    "OCSVM": OneClassSVM(nu=0.25, gamma=0.35),
}
colors = ["m", "g", "b"]

Detección de valores atípicos en datos bidimensionales

Realizaremos la detección de valores atípicos en el conjunto de datos bidimensional Wine. Utilizaremos tres clasificadores diferentes para detectar valores atípicos: Covarianza Empírica, Covarianza Robusta y SVM de una clase. Luego graficaremos los resultados.

## Aprender una frontera para la detección de valores atípicos con varios clasificadores
xx1, yy1 = np.meshgrid(np.linspace(0, 6, 500), np.linspace(1, 4.5, 500))
for i, (clf_name, clf) in enumerate(classifiers.items()):
    plt.figure(1)
    clf.fit(X1)
    Z1 = clf.decision_function(np.c_[xx1.ravel(), yy1.ravel()])
    Z1 = Z1.reshape(xx1.shape)
    plt.contour(
        xx1, yy1, Z1, levels=[0], linewidths=2, colors=colors[i]
    )

## Graficar los resultados (= forma de la nube de puntos de datos)
plt.figure(1)  ## dos clusters
plt.title("Detección de valores atípicos en un conjunto de datos real (reconocimiento de vinos)")
plt.scatter(X1[:, 0], X1[:, 1], color="black")
plt.xlim((xx1.min(), xx1.max()))
plt.ylim((yy1.min(), yy1.max()))
plt.ylabel("ceniza")
plt.xlabel("ácido málico")
plt.show()

Detección de valores atípicos en datos complejos

Realizaremos la detección de valores atípicos en el conjunto de datos Wine en forma de "plátano". Utilizaremos los mismos tres clasificadores que antes y graficaremos los resultados.

## Aprender una frontera para la detección de valores atípicos con varios clasificadores
xx2, yy2 = np.meshgrid(np.linspace(-1, 5.5, 500), np.linspace(-2.5, 19, 500))
for i, (clf_name, clf) in enumerate(classifiers.items()):
    plt.figure(2)
    clf.fit(X2)
    Z2 = clf.decision_function(np.c_[xx2.ravel(), yy2.ravel()])
    Z2 = Z2.reshape(xx2.shape)
    plt.contour(
        xx2, yy2, Z2, levels=[0], linewidths=2, colors=colors[i]
    )

## Graficar los resultados (= forma de la nube de puntos de datos)
plt.figure(2)  ## forma de "plátano"
plt.title("Detección de valores atípicos en un conjunto de datos real (reconocimiento de vinos)")
plt.scatter(X2[:, 0], X2[:, 1], color="black")
plt.xlim((xx2.min(), xx2.max()))
plt.ylim((yy2.min(), yy2.max()))
plt.ylabel("intensidad de color")
plt.xlabel("flavonoides")
plt.show()

Resumen

En este laboratorio, realizamos la detección de valores atípicos en conjuntos de datos bidimensionales de Wine utilizando scikit-learn. Utilizamos tres clasificadores diferentes para detectar valores atípicos: Covarianza Empírica, Covarianza Robusta y SVM de una clase. Luego graficamos los resultados para visualizar los datos y los valores atípicos detectados. La detección de valores atípicos es una tarea importante en el análisis de datos, y scikit-learn proporciona varias herramientas para realizar esta tarea de manera eficiente.