ScikitLearn
Tutorial ScikitLearn: Identificación y tratamiento de valores faltantes
Scikit-Learn: Identificación y tratamiento de valores faltantes. Aprende a imputar datos faltantes en Python con Scikit-Learn y mejora el aprendizaje automático.
Aprende ScikitLearn GRATIS y certifícate¿Qué son los valores faltantes y por qué es necesario corregirlos antes del modelado?
En el contexto del aprendizaje automático, los valores faltantes representan la ausencia de datos en uno o más registros o características de un conjunto de datos. Estos valores pueden surgir por diversas razones, como errores en la recopilación, problemas de almacenamiento o cuestiones inherentes al proceso de adquisición de datos. La presencia de valores faltantes puede introducir sesgos y afectar negativamente al rendimiento de los modelos predictivos.
Es fundamental abordar los valores faltantes antes del entrenamiento de un modelo, ya que muchos algoritmos de machine learning no pueden manejar datos incompletos de forma nativa. Ignorar este paso puede conducir a errores en las predicciones o a conclusiones erróneas. Por ejemplo, si se eliminan indiscriminadamente los registros con valores faltantes, se podría reducir significativamente el tamaño del conjunto de datos, perdiendo información valiosa y potencialmente introduciendo sesgos.
Un enfoque común para tratar valores faltantes es la imputación, que consiste en estimar y reemplazar los valores faltantes basándose en la información disponible. Scikit-learn proporciona diversas herramientas para realizar imputaciones de manera eficiente y sistemática. A continuación, se presenta un ejemplo de cómo identificar valores faltantes utilizando pandas y preparar los datos para su imputación con Scikit-learn:
import pandas as pd
from sklearn.impute import SimpleImputer
# Cargar el conjunto de datos
datos = pd.read_csv('datos.csv')
# Identificar valores faltantes
print(datos.isnull().sum())
# Seleccionar las características numéricas
características_numéricas = datos.select_dtypes(include=['float64', 'int64']).columns
# Crear un imputador para las características numéricas
imputador = SimpleImputer(strategy='mean')
# Aplicar la imputación
datos[características_numéricas] = imputador.fit_transform(datos[características_numéricas])
En este ejemplo, se utiliza SimpleImputer para reemplazar los valores faltantes de las características numéricas por la media de cada una. Es crucial seleccionar la estrategia de imputación adecuada según el tipo de datos y la naturaleza del conjunto de datos. Además, es recomendable explorar la distribución de las variables para decidir si la media, la mediana u otra medida es la más apropiada para la imputación.
Los valores faltantes también pueden afectar a la interpretabilidad de los resultados. Un análisis detallado de los patrones de faltantes puede revelar información importante sobre el proceso de generación de datos y ayudar a mejorar la calidad del modelo predictivo.
Detección de valores faltantes
La detección de valores faltantes es un paso fundamental en el preprocesamiento de datos. Identificar correctamente dónde se encuentran los valores ausentes permite aplicar técnicas de imputación adecuadas y mejorar la calidad del modelo predictivo. En Scikit-Learn, aunque el enfoque principal es el modelado, existen herramientas que facilitan la detección y el manejo de estos valores.
Una forma eficiente de detectar valores faltantes es utilizando las funciones integradas de NumPy y pandas para identificar NaN en los conjuntos de datos. Sin embargo, Scikit-Learn ofrece el transformer MissingIndicator
, que puede ser útil en pipelines de preprocesamiento. Este transformer genera una matriz booleana que indica la posición de los valores faltantes en el conjunto de datos.
A continuación, se presenta un ejemplo de cómo utilizar MissingIndicator
para detectar valores faltantes:
from sklearn.impute import MissingIndicator
import numpy as np
# Supongamos que tenemos el siguiente conjunto de datos
X = np.array([[1, 2, np.nan],
[4, np.nan, 6],
[7, 8, 9]])
# Crear una instancia de MissingIndicator
indicador = MissingIndicator(features='all')
# Ajustar el indicador al conjunto de datos y transformarlo
indicadores_faltantes = indicador.fit_transform(X)
print(indicadores_faltantes)
Este código produce una matriz que muestra con True
la posición de los valores faltantes. El parámetro features='all'
indica que se considerarán todas las características al buscar valores faltantes.
Es importante destacar que MissingIndicator
puede integrarse en un pipeline de Scikit-Learn para procesar los datos de manera secuencial. Por ejemplo, se puede combinar con un imputador para manejar los valores faltantes y añadir indicadores que informen al modelo sobre la ubicación original de estos valores:
from sklearn.pipeline import FeatureUnion, Pipeline
from sklearn.impute import SimpleImputer
# Crear un imputador simple para reemplazar los valores faltantes
imputador = SimpleImputer(strategy='mean')
# Combinar el imputador y el indicador de faltantes
preprocesamiento = FeatureUnion(transformer_list=[
('imputación', imputador),
('indicador', MissingIndicator(features='all'))
])
# Integrar el preprocesamiento en un pipeline con un modelo (por ejemplo, regresión logística)
from sklearn.linear_model import LogisticRegression
pipeline = Pipeline(steps=[
('preprocesamiento', preprocesamiento),
('clasificador', LogisticRegression())
], memory = None)
En este ejemplo, FeatureUnion
combina las transformaciones del imputador y el indicador de faltantes. De esta manera, el modelo recibe tanto los datos imputados como la información sobre qué valores eran originalmente faltantes. Esto puede mejorar la capacidad predictiva del modelo en ciertos casos.
Otra técnica valiosa es analizar el patrón de los valores faltantes para identificar posibles relaciones entre las características. Por ejemplo, se pueden calcular las correlaciones entre las variables faltantes o visualizar la máscara de valores faltantes:
import seaborn as sns
import pandas as pd
# Convertir el conjunto de datos en un DataFrame de pandas
df = pd.DataFrame(X, columns=['A', 'B', 'C'])
# Visualizar la máscara de valores faltantes
sns.heatmap(df.isnull(), cbar=False)
La visualización de la máscara de valores faltantes puede revelar patrones no evidentes a simple vista. Si los valores faltantes no se distribuyen aleatoriamente, esto podría indicar un sesgo que debe ser considerado durante el análisis.
Además, para conjuntos de datos de gran tamaño, es fundamental utilizar métodos eficientes. Scikit-Learn permite especificar el tipo de datos y utilizar matrices dispersas para optimizar el rendimiento. El uso de matrices dispersas es especialmente útil cuando hay una gran proporción de valores faltantes.
Por último, es recomendable verificar la proporción de valores faltantes en cada característica. Características con un alto porcentaje de datos faltantes pueden no ser útiles para el modelado y podrían ser descartadas. Un ejemplo de cómo calcular esta proporción es:
# Calcular el porcentaje de valores faltantes por característica
porcentaje_faltantes = df.isnull().mean() * 100
print(porcentaje_faltantes)
Con esta información, el analista puede tomar decisiones informadas sobre cómo proceder con cada característica, ya sea imputando, eliminando o tratando los valores faltantes de manera específica.
La detección de valores faltantes es un proceso clave que combina técnicas de exploración y herramientas de Scikit-Learn como MissingIndicator
. Una detección precisa y un análisis detallado de los valores faltantes permiten mejorar la calidad del preprocesamiento y, consecuentemente, el desempeño del modelo.
Imputación de datos faltantes
La imputación de datos es una técnica esencial en el preprocesamiento de datos que consiste en reemplazar los valores faltantes por estimaciones razonables. Este proceso permite mantener la integridad del conjunto de datos y aprovechar al máximo la información disponible para entrenar modelos de aprendizaje automático.
En Scikit-Learn, el transformer SimpleImputer proporciona métodos sencillos y eficaces para llevar a cabo la imputación de valores faltantes. Puede manejar tanto datos numéricos como categóricos, y ofrece varias estrategias de imputación que se adaptan a diferentes situaciones.
Una estrategia común para variables numéricas es reemplazar los valores faltantes por la media de la característica. Por ejemplo, para imputar los valores faltantes en una columna de ingresos, se puede calcular la media de los ingresos existentes y usar este valor para sustituir los faltantes:
from sklearn.impute import SimpleImputer
import numpy as np
# Supongamos que X es una matriz de características con valores faltantes
imputador_media = SimpleImputer(strategy='mean')
X_imputado = imputador_media.fit_transform(X)
Para variables numéricas con distribución asimétrica o presencia de outliers, la mediana puede ser una medida más robusta. La estrategia 'median'
en SimpleImputer permite utilizar la mediana para imputar:
imputador_mediana = SimpleImputer(strategy='median')
X_imputado = imputador_mediana.fit_transform(X)
En el caso de variables categóricas, es habitual utilizar la moda (el valor más frecuente) para imputar los datos faltantes. La estrategia 'most_frequent'
reemplaza los valores faltantes por el valor que más se repite en la característica:
imputador_moda = SimpleImputer(strategy='most_frequent')
X_imputado = imputador_moda.fit_transform(X)
Otra opción es utilizar un valor constante para imputar los datos faltantes. La estrategia 'constant'
permite especificar un valor de relleno mediante el parámetro fill_value
. Esto es útil cuando se desea distinguir los datos imputados con un valor especial:
imputador_constante = SimpleImputer(strategy='constant', fill_value=-999)
X_imputado = imputador_constante.fit_transform(X)
Es importante adaptar la estrategia de imputación al tipo de datos y al contexto del problema. Por ejemplo, para variables que representan categorías como 'Sexo' o 'Estado Civil', reemplazar los valores faltantes por la moda puede ser apropiado. Sin embargo, es fundamental analizar la distribución de los datos y considerar el impacto en el modelo.
La clase SimpleImputer también permite imputar diferentes características con distintas estrategias utilizando el ColumnTransformer. Esto es especialmente útil cuando se trabaja con conjuntos de datos mixtos que contienen tanto variables numéricas como categóricas:
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline
# Definir las columnas numéricas y categóricas
columnas_numéricas = ['edad', 'ingresos', 'puntuación_crediticia']
columnas_categóricas = ['sexo', 'estado_civil']
# Crear imputadores para cada tipo de dato
imputador_numérico = SimpleImputer(strategy='mean')
imputador_categórico = SimpleImputer(strategy='most_frequent')
# Crear el transformador de columnas
transformador = ColumnTransformer(transformers=[
('num', imputador_numérico, columnas_numéricas),
('cat', imputador_categórico, columnas_categóricas)
])
# Aplicar la imputación
X_imputado = transformador.fit_transform(X)
Integrar la imputación en un pipeline garantiza que el proceso de preprocesamiento se aplique de manera consistente durante el entrenamiento y la validación del modelo. Esto evita el sobreajuste y asegura que las transformaciones se realicen correctamente en nuevos datos.
Además de SimpleImputer, Scikit-Learn ofrece el MissingIndicator, que puede añadirse al conjunto de características para indicar la posición de los valores faltantes. Esta técnica permite al modelo considerar la ausencia de datos como una información adicional:
from sklearn.impute import MissingIndicator
from sklearn.preprocessing import OneHotEncoder
from sklearn.pipeline import FeatureUnion
# Crear un imputador y un indicador de faltantes
imputador = SimpleImputer(strategy='mean')
indicador = MissingIndicator(features='all')
# Combinar ambos transformadores
transformador = FeatureUnion(transformer_list=[
('imputación', imputador),
('indicador', indicador)
])
# Aplicar la transformación
X_transformado = transformador.fit_transform(X)
Utilizar FeatureUnion permite concatenar las características imputadas con los indicadores de valores faltantes. De esta manera, el modelo puede aprovechar la información sobre qué valores fueron inicialmente faltantes, lo que puede mejorar su capacidad predictiva.
Es recomendable evaluar el impacto de la imputación en el rendimiento del modelo y experimentar con diferentes estrategias. La elección de la técnica adecuada depende del conjunto de datos y del problema específico que se esté tratando.
Para casos en los que la proporción de valores faltantes es muy alta, puede ser preferible eliminar las características o registros afectados. Sin embargo, esta decisión debe tomarse con precaución, ya que podría conducir a la pérdida de información relevante.
Imputadores avanzados: KNNImputer, IterativeImputer
La imputación de valores faltantes es una etapa crucial en el preprocesamiento de datos. Más allá de las técnicas simples como la imputación con la media o la moda, existen métodos avanzados que aprovechan la estructura del conjunto de datos para estimar los valores ausentes de manera más precisa. En Scikit-Learn, los imputadores avanzados como KNNImputer e IterativeImputer proporcionan herramientas sofisticadas para este propósito.
KNNImputer utiliza el algoritmo de los k vecinos más cercanos para imputar valores faltantes. Para cada muestra con valores faltantes, busca las k muestras más cercanas basándose en las características disponibles y calcula el valor imputado a partir de ellas. Este método es especialmente útil cuando se asume que muestras similares tienen valores similares en sus características.
A continuación se presenta un ejemplo de cómo utilizar KNNImputer:
import pandas as pd
from sklearn.impute import KNNImputer
# Cargar los datos en un DataFrame
datos = pd.read_csv('datos.csv')
# Seleccionar las características relevantes
X = datos[['edad', 'ingresos', 'puntuación_crediticia']]
# Crear una instancia de KNNImputer
imputador_knn = KNNImputer(n_neighbors=5, weights='uniform')
# Aplicar la imputación
X_imputado = imputador_knn.fit_transform(X)
En este código, n_neighbors=5 indica que se considerarán los 5 vecinos más cercanos para la imputación. El parámetro weights='uniform' especifica que todos los vecinos contribuyen por igual al cálculo del valor imputado. También es posible utilizar weights='distance' para ponderar los vecinos según su proximidad.
Es importante tener en cuenta que KNNImputer puede ser sensible al escalado de las características. Por ello, es recomendable estandarizar o normalizar los datos antes de aplicar este imputador. Por ejemplo:
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline
# Crear un pipeline que estandariza y luego imputa
pipeline_knn = make_pipeline(StandardScaler(), KNNImputer(n_neighbors=5), memory = None)
# Aplicar el pipeline
X_imputado = pipeline_knn.fit_transform(X)
Por otro lado, el IterativeImputer realiza una imputación múltiple mediante modelos de regresión. Iterativamente estima cada característica con valores faltantes como una función de las demás características. Este método puede capturar relaciones más complejas entre las variables y suele proporcionar mejores resultados cuando las variables están correlacionadas.
Un ejemplo de uso de IterativeImputer es el siguiente:
from sklearn.experimental import enable_iterative_imputer # Necesario para algunas versiones
from sklearn.impute import IterativeImputer
from sklearn.ensemble import RandomForestRegressor
# Crear una instancia de IterativeImputer con un estimador base
imputador_iterativo = IterativeImputer(estimator=RandomForestRegressor(), random_state=0)
# Aplicar la imputación
X_imputado = imputador_iterativo.fit_transform(X)
En este ejemplo, se utiliza un RandomForestRegressor como estimador base para modelar cada característica con valores faltantes. El IterativeImputer ajusta un modelo para predecir los valores faltantes de una variable en función de las demás, iterando este proceso hasta la convergencia. El parámetro random_state garantiza la reproducibilidad de los resultados.
Es posible personalizar el estimador que se utiliza para imputar, eligiendo aquel que mejor se adapte al tipo de datos y a la complejidad del problema. Por defecto, IterativeImputer utiliza un BayesianRidge para regresión y un DecisionTreeClassifier para clasificación.
Al igual que con KNNImputer, es aconsejable escalar las características antes de aplicar el IterativeImputer. Además, controlar el número máximo de iteraciones con el parámetro max_iter puede ser relevante para problemas grandes:
# Crear un pipeline con escalado y IterativeImputer
pipeline_iterativo = make_pipeline(StandardScaler(), IterativeImputer(max_iter=10, random_state=0), memory = None)
# Aplicar el pipeline
X_imputado = pipeline_iterativo.fit_transform(X)
Es fundamental evaluar el impacto de la imputación en el análisis posterior. Comparar las diferentes estrategias y seleccionar el imputador adecuado puede mejorar significativamente la calidad de los modelos predictivos.
Algunas consideraciones al utilizar estos imputadores avanzados:
- Rendimiento computacional: métodos como IterativeImputer pueden ser computacionalmente costosos en conjuntos de datos muy grandes.
- Suposiciones sobre los datos: entender las relaciones entre las variables ayuda a elegir el método más apropiado.
- Validación cruzada: es recomendable validar el proceso de imputación utilizando técnicas como la validación cruzada para evitar el sobreajuste.
Finalmente, integrar los imputadores avanzados dentro de un pipeline de Scikit-Learn permite encadenar las etapas de preprocesamiento y modelado de manera eficiente. Por ejemplo, combinar imputación y clasificación:
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import Pipeline
# Crear un pipeline con imputación iterativa y un modelo
pipeline_modelo = Pipeline(steps=[
('escala', StandardScaler()),
('imputación', IterativeImputer(random_state=0)),
('clasificador', LogisticRegression())
], memory = None)
# Entrenar el modelo
pipeline_modelo.fit(X, y)
En este caso, se realiza la imputación de valores faltantes y el entrenamiento del modelo en una sola secuencia, asegurando que las transformaciones se aplican de manera coherente tanto en el entrenamiento como en la predicción.
Creación de funciones Python para imputar valores faltantes
La imputación de valores faltantes es un paso esencial en el preprocesamiento de datos. Aunque Scikit-Learn proporciona herramientas como SimpleImputer
, KNNImputer
e IterativeImputer
, en ocasiones es necesario implementar funciones personalizadas para abordar casos específicos. Crear funciones Python para imputar valores faltantes permite desarrollar estrategias adaptadas a las particularidades del conjunto de datos y integrar conocimientos de dominio en el proceso de imputación.
Una forma común de personalizar la imputación es utilizando funciones que aplican reglas basadas en la lógica de negocio o en análisis exploratorios previos. A continuación, se muestra cómo crear y aplicar una función personalizada para imputar valores faltantes en un DataFrame de pandas:
import pandas as pd
import numpy as np
# Supongamos que tenemos un DataFrame con información demográfica
datos = pd.DataFrame({
'edad': [25, np.nan, 35, 40, np.nan],
'ingresos': [50000, 60000, np.nan, 80000, 70000],
'ocupacion': ['Empleado', 'Autónomo', 'Empleado', np.nan, 'Desempleado']
})
# Definir una función personalizada para imputar valores faltantes
def imputar_personalizado(df):
# Imputar la edad faltante con la mediana
df['edad'] = df['edad'].fillna(df['edad'].median())
# Imputar los ingresos faltantes con la media
df['ingresos'] = df['ingresos'].fillna(df['ingresos'].mean())
# Imputar la ocupación faltante con un valor constante
df['ocupacion'] = df['ocupacion'].fillna('No especificado')
return df
# Aplicar la función al DataFrame
datos_imputados = imputar_personalizado(datos.copy())
print(datos_imputados)
En este ejemplo, se utiliza la mediana para imputar la edad y la media para los ingresos. Además, se reemplazan los valores faltantes en la ocupación con la cadena 'No especificado'. Esta estrategia permite conservar la coherencia de los datos y evitar distorsiones en la distribución de las variables.
Para integrar funciones de imputación personalizadas en un pipeline de Scikit-Learn, es necesario crear una clase que siga la interfaz de un transformador. Esto se logra heredando de BaseEstimator
y TransformerMixin
, y definiendo los métodos fit
y transform
. A continuación, se presenta un ejemplo de cómo crear un imputador personalizado:
from sklearn.base import BaseEstimator, TransformerMixin
class ImputadorPersonalizado(BaseEstimator, TransformerMixin):
def __init__(self):
pass
def fit(self, X, y=None):
# Calcular medidas necesarias para la imputación
self.mediana_edad = X['edad'].median()
self.media_ingresos = X['ingresos'].mean()
return self
def transform(self, X):
X_copiado = X.copy()
# Imputar la edad faltante con la mediana calculada
X_copiado['edad'].fillna(self.mediana_edad, inplace=True)
# Imputar los ingresos faltantes con la media calculada
X_copiado['ingresos'].fillna(self.media_ingresos, inplace=True)
# Imputar la ocupación faltante con un valor constante
X_copiado['ocupación'].fillna('No especificado', inplace=True)
return X_copiado
La clase ImputadorPersonalizado
calcula en el método fit
la mediana y la media necesarias para la imputación. Luego, en el método transform
, aplica la imputación a una copia de los datos. Este transformador puede integrarse fácilmente en un pipeline:
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import OneHotEncoder
# Crear un pipeline que incluye el imputador personalizado y una codificación One-Hot
pipeline = Pipeline(steps=[
('imputación', ImputadorPersonalizado()),
('codificación', OneHotEncoder(handle_unknown='ignore'))
], memory = None)
# Ajustar el pipeline a los datos
pipeline.fit(datos)
# Transformar los datos
datos_transformados = pipeline.transform(datos)
print(datos_transformados.toarray())
En este pipeline, después de la imputación personalizada, se aplica OneHotEncoder
para convertir las variables categóricas en una representación numérica. El parámetro handle_unknown='ignore' asegura que se manejen adecuadamente categorías no vistas durante el ajuste.
Crear transformadores personalizados permite también aplicar imputaciones condicionales basadas en otras características. Por ejemplo, imputar los ingresos faltantes según el promedio por ocupación:
class ImputadorCondicional(BaseEstimator, TransformerMixin):
def __init__(self):
pass
def fit(self, X, y=None):
# Calcular el ingreso medio por ocupación
self.media_por_ocupacion = X.groupby('ocupación')['ingresos'].mean()
return self
def transform(self, X):
X_copiado = X.copy()
# Imputar los ingresos faltantes basados en la ocupación
def imputar_ingreso(row):
if pd.isnull(row['ingresos']):
return self.media_por_ocupacion.get(row['ocupación'], self.media_por_ocupacion.mean())
else:
return row['ingresos']
X_copiado['ingresos'] = X_copiado.apply(imputar_ingreso, axis=1)
return X_copiado
En este caso, el imputador calcula en el fit
la media de los ingresos para cada ocupación y luego en el transform
utiliza esta información para imputar valores faltantes de ingresos de manera más informada.
Otro aspecto importante es la posibilidad de combinar varias estrategias de imputación utilizando ColumnTransformer
. Esto permite aplicar diferentes imputaciones a distintas columnas en un solo paso:
from sklearn.compose import ColumnTransformer
from sklearn.impute import SimpleImputer
# Definir las columnas numéricas y categóricas
columnas_numéricas = ['edad', 'ingresos']
columnas_categóricas = ['ocupación']
# Crear imputadores para cada tipo de dato
imputador_numérico = SimpleImputer(strategy='mean')
imputador_categórico = SimpleImputer(strategy='constant', fill_value='No especificado')
# Combinar los imputadores con ColumnTransformer
transformador = ColumnTransformer(transformers=[
('num', imputador_numérico, columnas_numéricas),
('cat', imputador_categórico, columnas_categóricas)
])
# Aplicar el transformador a los datos
datos_imputados = transformador.fit_transform(datos)
print(datos_imputados)
La utilización de ColumnTransformer facilita la imputación cuando se trabaja con conjuntos de datos que contienen múltiples tipos de variables. No obstante, si se requiere una lógica más compleja, es preferible implementar un transformador personalizado.
Para validar la eficacia de las funciones de imputación personalizadas, es aconsejable realizar análisis después de la imputación. Por ejemplo, verificar que no queden valores faltantes:
# Comprobar si quedan valores faltantes
valores_faltantes = datos_imputados.isnull().sum()
print("Valores faltantes después de la imputación:\n", valores_faltantes)
Además, es útil analizar cómo la imputación afecta la distribución de las variables. Utilizar visualizaciones como histogramas o boxplots puede revelar si la imputación introduce sesgos:
import matplotlib.pyplot as plt
# Comparar la distribución de 'edad' antes y después de la imputación
fig, axs = plt.subplots(1, 2, figsize=(10, 4))
datos['edad'].hist(ax=axs[0], bins=5, edgecolor='black')
axs[0].set_title('Edad antes de la imputación')
datos_imputados['edad'].hist(ax=axs[1], bins=5, edgecolor='black', color='orange')
axs[1].set_title('Edad después de la imputación')
plt.show()
Es esencial asegurarse de que las imputaciones no introduzcan distorsiones significativas en los datos que puedan afectar al rendimiento del modelo.
Finalmente, integrar funciones Python personalizadas para imputar valores faltantes permite mayor flexibilidad y control en el preprocesamiento. Al crear transformadores que siguen la API de Scikit-Learn, es posible construir pipelines complejos y reutilizables que incorporan estrategias de imputación adaptadas a las necesidades específicas del análisis.
Ejercicios de esta lección Identificación y tratamiento de valores faltantes
Evalúa tus conocimientos de esta lección Identificación y tratamiento de valores faltantes con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.
Todas las lecciones de ScikitLearn
Accede a todas las lecciones de ScikitLearn y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.
Aprendizaje Automático
Introducción Y Entorno
Introducción E Instalación
Introducción Y Entorno
Introducción Al Preprocesamiento De Datos
Preprocesamiento De Datos
Identificación Y Tratamiento De Valores Faltantes
Preprocesamiento De Datos
Escalado De Datos
Preprocesamiento De Datos
Normalización De Datos
Preprocesamiento De Datos
Codificación De Variables Categóricas
Preprocesamiento De Datos
Ingeniería De Características
Preprocesamiento De Datos
Selección De Características
Preprocesamiento De Datos
Extracción De Características
Preprocesamiento De Datos
Particionamiento De Datos
Preprocesamiento De Datos
Preprocesamiento De Datos Desbalanceados
Preprocesamiento De Datos
Introducción A La Regresión
Regresión
Regresión Lineal
Regresión
Regresión Knn Kneighborsregressor
Regresión
Regresión Svm Con Svr
Regresión
Regresión Con Árboles Decisiontreeregressor
Regresión
Regresión Con Algoritmos De Conjunto
Regresión
Introducción A La Clasificación
Clasificación
Clasificación Con Regresión Logística
Clasificación
Clasificación Knn Kneighborsclassifier
Clasificación
Clasificación Svm Con Svc
Clasificación
Clasificación Con Árboles Decisiontreeclassifier
Clasificación
Clasificación Con Algoritmos De Conjunto
Clasificación
Reducción De La Dimensionalidad Con Pca
Aprendizaje No Supervisado
Clustering Con Kmeans
Aprendizaje No Supervisado
Clustering Jerárquico
Aprendizaje No Supervisado
Clustering De Densidad Con Dbscan
Aprendizaje No Supervisado
Preprocesamiento De Textos Para Nlp
Nlp
Representación De Texto Y Extracción De Características
Nlp
Clasificación De Texto Con Scikit Learn
Nlp
Análisis De Sentimiento
Nlp
Técnicas Avanzadas De Extracción De Características
Nlp
Introducción Al Análisis De Series Temporales
Series Temporales
Preprocesamiento De Datos De Series Temporales
Series Temporales
Ingeniería De Características Para Series Temporales
Series Temporales
Transformación Y Escalado De Series Temporales
Series Temporales
Validación Y Evaluación De Modelos En Series Temporales
Series Temporales
Validación Y Evaluación De Modelos
Validación De Modelos
Técnicas De Validación Cruzada
Validación De Modelos
Métricas De Regresión
Validación De Modelos
Métricas De Clasificación
Validación De Modelos
Ajuste De Hiperparámetros
Validación De Modelos
Introducción A Pipelines
Pipelines Y Despliegue
Creación De Pipelines Básicos
Pipelines Y Despliegue
Preprocesamiento De Datos Con Pipelines
Pipelines Y Despliegue
Pipelines Y Validación Cruzada
Pipelines Y Despliegue
Pipelines Con Columntransformer
Pipelines Y Despliegue
Exportar E Importar Pipelines
Pipelines Y Despliegue
Objetivos de aprendizaje de esta lección
- Comprender qué son los valores faltantes y su impacto en los modelos predictivos.
- Detectar valores faltantes utilizando pandas y Scikit-Learn.
- Aplicar técnicas de imputación simple con
SimpleImputer
. - Emplear imputadores avanzados como
KNNImputer
eIterativeImputer
. - Crear funciones Python personalizadas para imputar valores faltantes.
- Integrar imputadores y transformadores personalizados en pipelines de Scikit-Learn.