Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Automatización del Preprocesamiento con Pipelines | Ingeniería de Características para Aprendizaje Automático
Preprocesamiento de Datos y Diseño de Características

bookAutomatización del Preprocesamiento con Pipelines

Automatiza el preprocesamiento y la ingeniería de características con pipelines de scikit-learn para garantizar resultados de aprendizaje automático consistentes y reproducibles. Los pipelines permiten encadenar pasos como escalado, codificación y selección de características, asegurando que cada transformación ocurra siempre en el mismo orden.

Para construir un pipeline en scikit-learn, define una lista de pasos, donde cada paso es una tupla que contiene un nombre de paso único (como cadena) y un objeto transformador (como StandardScaler o SelectKBest). Por ejemplo:

steps = [
    ("scaler", StandardScaler()),
    ("feature_selection", SelectKBest(score_func=f_classif, k=2))
]

Luego, pasa esta lista al objeto Pipeline:

pipeline = Pipeline(steps)

El pipeline aplica cada transformador en orden, pasando la salida de un paso como entrada al siguiente. Este enfoque no solo ahorra tiempo, sino que también reduce el riesgo de fuga de datos, haciendo que los experimentos sean más fiables y fáciles de reproducir.

Uso de ColumnTransformer para subconjuntos de características

Con ColumnTransformer, es posible aplicar diferentes pipelines de preprocesamiento a distintos subconjuntos de características dentro de los datos. Por ejemplo:

# Define column types
numeric_features = ['age', 'fare']
categorical_features = ['embarked', 'sex']

# Preprocessing for numeric features: impute missing values and scale
numeric_transformer = Pipeline([
    ('imputer', SimpleImputer(strategy='mean')),
    ('scaler', StandardScaler())
])

# Preprocessing for categorical features: impute missing values and encode
categorical_transformer = Pipeline([
    ('imputer', SimpleImputer(strategy='most_frequent')),
    ('encoder', OneHotEncoder(handle_unknown='ignore'))
])

Esto permite construir un pipeline unificado que gestiona correctamente tanto los datos numéricos como los categóricos, manteniendo el código de preprocesamiento organizado y asegurando que cada transformación se aplique a las columnas correspondientes.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
import numpy as np import pandas as pd import seaborn as sns from sklearn.pipeline import Pipeline from sklearn.impute import SimpleImputer from sklearn.preprocessing import StandardScaler, OneHotEncoder from sklearn.compose import ColumnTransformer from sklearn.feature_selection import SelectKBest, f_classif # Load the Titanic dataset from seaborn (no warnings!) df = sns.load_dataset('titanic') # Select features and target features = ['age', 'fare', 'embarked', 'sex'] X = df[features] y = df['survived'] # Target variable # Define column types numeric_features = ['age', 'fare'] categorical_features = ['embarked', 'sex'] # Preprocessing for numeric features: impute missing values and scale numeric_transformer = Pipeline([ ('imputer', SimpleImputer(strategy='mean')), ('scaler', StandardScaler()) ]) # Preprocessing for categorical features: impute missing values and encode categorical_transformer = Pipeline([ ('imputer', SimpleImputer(strategy='most_frequent')), ('encoder', OneHotEncoder(handle_unknown='ignore')) ]) # Combine preprocessing steps preprocessor = ColumnTransformer([ ('num', numeric_transformer, numeric_features), ('cat', categorical_transformer, categorical_features) ]) # Build the full pipeline with preprocessing and feature selection pipeline = Pipeline([ ('preprocessing', preprocessor), ('feature_selection', SelectKBest(score_func=f_classif, k=3)) ]) # Fit and transform the data X_transformed = pipeline.fit_transform(X, y) print(f"Original shape: {X.shape}") print(f"Reduced from {X.shape[1]} features to {X_transformed.shape[1]} selected features")
copy
Note
Nota

Integrar el preprocesamiento en el pipeline de entrenamiento garantiza transformaciones consistentes y ayuda a prevenir la fuga de datos tanto en el entrenamiento como en la predicción.

question mark

¿Cuál de las siguientes es una ventaja clave de utilizar pipelines de sklearn para el preprocesamiento y la ingeniería de características?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 3

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Suggested prompts:

Can you explain how SelectKBest chooses the top features in this pipeline?

What would happen if I changed the value of k in SelectKBest?

How can I add a classifier to this pipeline after feature selection?

Awesome!

Completion rate improved to 8.33

bookAutomatización del Preprocesamiento con Pipelines

Desliza para mostrar el menú

Automatiza el preprocesamiento y la ingeniería de características con pipelines de scikit-learn para garantizar resultados de aprendizaje automático consistentes y reproducibles. Los pipelines permiten encadenar pasos como escalado, codificación y selección de características, asegurando que cada transformación ocurra siempre en el mismo orden.

Para construir un pipeline en scikit-learn, define una lista de pasos, donde cada paso es una tupla que contiene un nombre de paso único (como cadena) y un objeto transformador (como StandardScaler o SelectKBest). Por ejemplo:

steps = [
    ("scaler", StandardScaler()),
    ("feature_selection", SelectKBest(score_func=f_classif, k=2))
]

Luego, pasa esta lista al objeto Pipeline:

pipeline = Pipeline(steps)

El pipeline aplica cada transformador en orden, pasando la salida de un paso como entrada al siguiente. Este enfoque no solo ahorra tiempo, sino que también reduce el riesgo de fuga de datos, haciendo que los experimentos sean más fiables y fáciles de reproducir.

Uso de ColumnTransformer para subconjuntos de características

Con ColumnTransformer, es posible aplicar diferentes pipelines de preprocesamiento a distintos subconjuntos de características dentro de los datos. Por ejemplo:

# Define column types
numeric_features = ['age', 'fare']
categorical_features = ['embarked', 'sex']

# Preprocessing for numeric features: impute missing values and scale
numeric_transformer = Pipeline([
    ('imputer', SimpleImputer(strategy='mean')),
    ('scaler', StandardScaler())
])

# Preprocessing for categorical features: impute missing values and encode
categorical_transformer = Pipeline([
    ('imputer', SimpleImputer(strategy='most_frequent')),
    ('encoder', OneHotEncoder(handle_unknown='ignore'))
])

Esto permite construir un pipeline unificado que gestiona correctamente tanto los datos numéricos como los categóricos, manteniendo el código de preprocesamiento organizado y asegurando que cada transformación se aplique a las columnas correspondientes.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
import numpy as np import pandas as pd import seaborn as sns from sklearn.pipeline import Pipeline from sklearn.impute import SimpleImputer from sklearn.preprocessing import StandardScaler, OneHotEncoder from sklearn.compose import ColumnTransformer from sklearn.feature_selection import SelectKBest, f_classif # Load the Titanic dataset from seaborn (no warnings!) df = sns.load_dataset('titanic') # Select features and target features = ['age', 'fare', 'embarked', 'sex'] X = df[features] y = df['survived'] # Target variable # Define column types numeric_features = ['age', 'fare'] categorical_features = ['embarked', 'sex'] # Preprocessing for numeric features: impute missing values and scale numeric_transformer = Pipeline([ ('imputer', SimpleImputer(strategy='mean')), ('scaler', StandardScaler()) ]) # Preprocessing for categorical features: impute missing values and encode categorical_transformer = Pipeline([ ('imputer', SimpleImputer(strategy='most_frequent')), ('encoder', OneHotEncoder(handle_unknown='ignore')) ]) # Combine preprocessing steps preprocessor = ColumnTransformer([ ('num', numeric_transformer, numeric_features), ('cat', categorical_transformer, categorical_features) ]) # Build the full pipeline with preprocessing and feature selection pipeline = Pipeline([ ('preprocessing', preprocessor), ('feature_selection', SelectKBest(score_func=f_classif, k=3)) ]) # Fit and transform the data X_transformed = pipeline.fit_transform(X, y) print(f"Original shape: {X.shape}") print(f"Reduced from {X.shape[1]} features to {X_transformed.shape[1]} selected features")
copy
Note
Nota

Integrar el preprocesamiento en el pipeline de entrenamiento garantiza transformaciones consistentes y ayuda a prevenir la fuga de datos tanto en el entrenamiento como en la predicción.

question mark

¿Cuál de las siguientes es una ventaja clave de utilizar pipelines de sklearn para el preprocesamiento y la ingeniería de características?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 3
some-alt