Imputación de Valores Faltantes

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

Muchos conjuntos de datos del mundo real contienen valores faltantes, lo que puede causar problemas al utilizar algoritmos de aprendizaje automático que asumen datos completos y numéricos. En tales casos, es importante manejar adecuadamente los valores faltantes para aprovechar al máximo los datos disponibles. Una estrategia común es la imputación, que consiste en rellenar los valores faltantes en función de la parte conocida de los datos.

En este tutorial, exploraremos diferentes estrategias para imputar valores faltantes utilizando scikit-learn, una popular biblioteca de aprendizaje automático en Python.

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/DataPreprocessingandFeatureEngineeringGroup(["Data Preprocessing and Feature Engineering"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/DataPreprocessingandFeatureEngineeringGroup -.-> sklearn/impute("Impute") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/impute -.-> lab-71131{{"Imputación de Valores Faltantes"}} ml/sklearn -.-> lab-71131{{"Imputación de Valores Faltantes"}} end

Importar los módulos necesarios

Primero, debemos importar los módulos requeridos de la biblioteca scikit-learn. Utilizaremos la clase SimpleImputer para la imputación de características univariadas y la clase IterativeImputer para la imputación de características multivariadas.

import numpy as np
from sklearn.impute import SimpleImputer, IterativeImputer

Imputación de características univariadas utilizando SimpleImputer

La clase SimpleImputer proporciona estrategias básicas para imputar valores faltantes de manera univariada. Podemos elegir entre diferentes estrategias, como reemplazar los valores faltantes con un valor constante o utilizar la media, la mediana o el valor más frecuente de cada columna para imputar los valores faltantes.

Comencemos considerando la estrategia de la media. Crearemos una instancia de SimpleImputer y la ajustaremos a nuestros datos para aprender la estrategia de imputación. Luego, podemos utilizar el método transform para imputar los valores faltantes en base a la estrategia aprendida.

imp = SimpleImputer(strategy='mean')
X = [[1, 2], [np.nan, 3], [7, 6]]
imp.fit(X)
X_test = [[np.nan, 2], [6, np.nan], [7, 6]]
imputed_X_test = imp.transform(X_test)

Imputación de características multivariadas utilizando IterativeImputer

La clase IterativeImputer es un enfoque más avanzado para imputar valores faltantes. Modela cada característica con valores faltantes como una función de otras características y utiliza esa estimación para la imputación. Aprende iterativamente las relaciones entre las características e imputa los valores faltantes en base a estas relaciones.

imp = IterativeImputer()
X = [[1, 2], [3, 6], [4, 8], [np.nan, 3], [7, np.nan]]
imp.fit(X)
X_test = [[np.nan, 2], [6, np.nan], [np.nan, 6]]
imputed_X_test = imp.transform(X_test)

Imputación de vecinos más cercanos utilizando KNNImputer

La clase KNNImputer proporciona la imputación para llenar valores faltantes utilizando el enfoque de k-Vecinos más Cercanos. Encuentra los vecinos más cercanos para cada muestra con valores faltantes e imputa los valores faltantes de las características en base a los valores de los vecinos.

from sklearn.impute import KNNImputer
nan = np.nan
X = [[1, 2, nan], [3, 4, 3], [nan, 6, 5], [8, 8, 7]]
imputer = KNNImputer(n_neighbors=2)
imputed_X = imputer.fit_transform(X)

Mantener el número de características constante

Por defecto, los imputadores de scikit-learn eliminan las columnas que contienen solo valores faltantes. Sin embargo, en algunos casos, es necesario mantener las características vacías para mantener la forma de los datos. Esto se puede lograr estableciendo el parámetro keep_empty_features en True.

imputer = SimpleImputer(keep_empty_features=True)
X = np.array([[np.nan, 1], [np.nan, 2], [np.nan, 3]])
imputed_X = imputer.fit_transform(X)

Marcando valores imputados utilizando MissingIndicator

El transformador MissingIndicator es útil para indicar la presencia de valores faltantes en un conjunto de datos. Puede utilizarse en combinación con la imputación para preservar información sobre qué valores se imputaron. Este transformador devuelve una matriz binaria que indica la presencia de valores faltantes en el conjunto de datos.

from sklearn.impute import MissingIndicator
X = np.array([[-1, -1, 1, 3], [4, -1, 0, -1], [8, -1, 1, 0]])
indicator = MissingIndicator()
mask_missing_values_only = indicator.fit_transform(X)

Resumen

En este tutorial, aprendimos diferentes estrategias para imputar valores faltantes utilizando scikit-learn. Exploramos la imputación de características univariadas con SimpleImputer, la imputación de características multivariadas con IterativeImputer, la imputación de vecinos más cercanos con KNNImputer, mantener el número de características constante y marcar los valores imputados con MissingIndicator. Estas técnicas pueden ser herramientas valiosas para manejar datos faltantes y garantizar que los algoritmos de aprendizaje automático se puedan aplicar a conjuntos de datos incompletos.