Técnicas de Preprocesamiento en Scikit-Learn

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

En este laboratorio, exploraremos las técnicas de preprocesamiento disponibles en scikit-learn. El preprocesamiento es un paso esencial en cualquier flujo de trabajo de aprendizaje automático ya que ayuda a transformar los datos brutos en un formato adecuado para el algoritmo de aprendizaje. Cubriremos varias técnicas de preprocesamiento como la estandarización, la escalado, la normalización, la codificación de características categóricas, la imputación de valores faltantes, la generación de características polinómicas y la creación de transformadores personalizados.

Consejos sobre la VM

Una vez que se haya iniciado 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/preprocessing("Preprocessing and Normalization") sklearn/DataPreprocessingandFeatureEngineeringGroup -.-> sklearn/impute("Impute") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/preprocessing -.-> lab-71130{{"Técnicas de Preprocesamiento en Scikit-Learn"}} sklearn/impute -.-> lab-71130{{"Técnicas de Preprocesamiento en Scikit-Learn"}} ml/sklearn -.-> lab-71130{{"Técnicas de Preprocesamiento en Scikit-Learn"}} end

Estandarización

La estandarización es un paso de preprocesamiento común para muchos algoritmos de aprendizaje automático. Transforma las características para que tengan media cero y varianza unitaria. Podemos utilizar el StandardScaler de scikit-learn para realizar la estandarización.

from sklearn.preprocessing import StandardScaler
import numpy as np

## Crea un conjunto de datos de muestra
X = np.array([[1., -1., 2.],
              [2., 0., 0.],
              [0., 1., -1.]])

## Inicializa el StandardScaler
scaler = StandardScaler()

## Ajusta el escalador a los datos de entrenamiento
scaler.fit(X)

## Transforma los datos de entrenamiento
X_scaled = scaler.transform(X)

## Imprime los datos transformados
print(X_scaled)

Escalado

Escalar las características a un rango específico es otra técnica de preprocesamiento común. Es útil cuando las características tienen diferentes escalas y queremos que todas estén en un rango similar. El MinMaxScaler y el MaxAbsScaler se pueden utilizar para realizar el escalado.

from sklearn.preprocessing import MinMaxScaler, MaxAbsScaler
import numpy as np

## Crea un conjunto de datos de muestra
X = np.array([[1., -1., 2.],
              [2., 0., 0.],
              [0., 1., -1.]])

## Inicializa el MinMaxScaler
min_max_scaler = MinMaxScaler()

## Ajusta y transforma los datos de entrenamiento
X_minmax = min_max_scaler.fit_transform(X)

## Imprime los datos transformados
print(X_minmax)

## Inicializa el MaxAbsScaler
max_abs_scaler = MaxAbsScaler()

## Ajusta y transforma los datos de entrenamiento
X_maxabs = max_abs_scaler.fit_transform(X)

## Imprime los datos transformados
print(X_maxabs)

Normalización

La normalización es el proceso de escalar las muestras individuales para que tengan norma unitaria. Se utiliza comúnmente cuando la magnitud de los datos no es importante y solo nos interesa la dirección (o el ángulo) de los datos. Podemos utilizar el Normalizer de scikit-learn para realizar la normalización.

from sklearn.preprocessing import Normalizer
import numpy as np

## Crea un conjunto de datos de muestra
X = np.array([[1., -1., 2.],
              [2., 0., 0.],
              [0., 1., -1.]])

## Inicializa el Normalizer
normalizer = Normalizer()

## Ajusta y transforma los datos de entrenamiento
X_normalized = normalizer.fit_transform(X)

## Imprime los datos transformados
print(X_normalized)

Codificación de Características Categóricas

Las características categóricas deben ser codificadas en valores numéricos antes de poder ser utilizadas en algoritmos de aprendizaje automático. Podemos utilizar el OrdinalEncoder y el OneHotEncoder de scikit-learn para codificar las características categóricas.

from sklearn.preprocessing import OrdinalEncoder, OneHotEncoder
import numpy as np

## Crea un conjunto de datos de muestra
X = [['male', 'from US', 'uses Safari'],
     ['female', 'from Europe', 'uses Firefox']]

## Inicializa el OrdinalEncoder
ordinal_encoder = OrdinalEncoder()

## Ajusta y transforma los datos de entrenamiento
X_encoded = ordinal_encoder.fit_transform(X)

## Imprime los datos transformados
print(X_encoded)

## Inicializa el OneHotEncoder
onehot_encoder = OneHotEncoder()

## Ajusta y transforma los datos de entrenamiento
X_onehot = onehot_encoder.fit_transform(X)

## Imprime los datos transformados
print(X_onehot.toarray())

Imputación de Valores Faltantes

Los valores faltantes en un conjunto de datos pueden causar problemas con los algoritmos de aprendizaje automático. Podemos utilizar los métodos proporcionados en el módulo impute de scikit-learn para manejar los valores faltantes. Aquí, usaremos el SimpleImputer para imputar valores faltantes.

from sklearn.impute import SimpleImputer
import numpy as np

## Crea un conjunto de datos de muestra con valores faltantes
X = np.array([[1., 2., np.nan],
              [3., np.nan, 5.],
              [np.nan, 4., 6.]])

## Inicializa el SimpleImputer
imputer = SimpleImputer()

## Ajusta y transforma los datos de entrenamiento
X_imputed = imputer.fit_transform(X)

## Imprime los datos transformados
print(X_imputed)

Generación de Características Polinómicas

A veces es beneficioso agregar complejidad a un modelo considerando las características no lineales de los datos de entrada. Podemos utilizar PolynomialFeatures de scikit-learn para generar características polinómicas.

from sklearn.preprocessing import PolynomialFeatures
import numpy as np

## Crea un conjunto de datos de muestra
X = np.array([[0, 1],
              [2, 3],
              [4, 5]])

## Inicializa PolynomialFeatures
poly = PolynomialFeatures(2)

## Ajusta y transforma los datos de entrenamiento
X_poly = poly.fit_transform(X)

## Imprime los datos transformados
print(X_poly)

Creación de Transformadores Personalizados

En algunos casos, puede que queramos convertir una función de Python existente en un transformador para ayudar en la limpieza o procesamiento de datos. Podemos lograr esto utilizando el FunctionTransformer de scikit-learn.

from sklearn.preprocessing import FunctionTransformer
import numpy as np

## Crea una función personalizada
def custom_function(X):
    return np.log1p(X)

## Inicializa el FunctionTransformer
transformer = FunctionTransformer(custom_function)

## Crea un conjunto de datos de muestra
X = np.array([[0, 1],
              [2, 3]])

## Transforma los datos utilizando la función personalizada
X_transformed = transformer.transform(X)

## Imprime los datos transformados
print

需要注意的是,你提供的原始英文内容中最后一个print语句后面缺少参数,这可能会导致代码运行出错。翻译后的内容保留了原始代码的问题。

Resumen

¡Felicitaciones! Has completado el laboratorio de Preprocesamiento de Datos. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.