Menu iconMenu icon
Ingeniería de Características para el Aprendizaje Automático Moderno con Scikit-Learn

Capítulo 8: AutoML y Ingeniería de Características Automatizada

8.3 Ejercicios Prácticos: Capítulo 8

Esta sección de ejercicios prácticos proporciona experiencia práctica con herramientas de AutoML, centrándose en la ingeniería automatizada de características, la selección de modelos y la optimización de tuberías. Al trabajar en estos ejercicios, desarrollará familiaridad con el uso de bibliotecas como Featuretools, Auto-sklearn y TPOT para simplificar la ingeniería de características y la construcción de modelos.

Ejercicio 1: Usar Featuretools para la Síntesis Profunda de Características

Objetivo: Crear nuevas características a partir de datos relacionales utilizando la síntesis profunda de características de Featuretools.

Instrucciones:

  1. Defina un conjunto de marcos de datos relacionados, incluyendo una tabla de clientes y una tabla de transacciones.
  2. Use Featuretools para generar características que agreguen detalles de transacciones a nivel de cliente.
  3. Muestre la matriz de características para verificar las características generadas.

Solución:

import pandas as pd
import featuretools as ft

# Sample data
customers_df = pd.DataFrame({
    'customer_id': [1, 2, 3],
    'signup_date': pd.to_datetime(['2022-01-01', '2022-02-01', '2022-03-01'])
})

transactions_df = pd.DataFrame({
    'transaction_id': [1, 2, 3, 4, 5],
    'customer_id': [1, 2, 1, 3, 2],
    'amount': [100, 200, 50, 300, 120],
    'transaction_date': pd.to_datetime(['2022-01-10', '2022-02-15', '2022-01-20', '2022-03-10', '2022-02-25'])
})

# Create an EntitySet and add dataframes
es = ft.EntitySet(id="customer_data")
es = es.add_dataframe(dataframe_name="customers", dataframe=customers_df, index="customer_id")
es = es.add_dataframe(dataframe_name="transactions", dataframe=transactions_df, index="transaction_id",
                      time_index="transaction_date")

# Define relationship and generate features
es = es.add_relationship("customers", "customer_id", "transactions", "customer_id")
feature_matrix, feature_defs = ft.dfs(entityset=es, target_dataframe_name="customers", agg_primitives=["mean", "sum", "count"])

# Display the feature matrix
print(feature_matrix.head())

En este ejercicio:

  • Definimos dos tablas y establecemos una relación entre ellas.
  • Featuretools genera automáticamente características a nivel de cliente, como el promedio y el total de montos de transacción, utilizando síntesis profunda de características.

Ejercicio 2: Ejecutar Auto-sklearn para Selección Automatizada de Modelos e Ingeniería de Características

Objetivo: Usar Auto-sklearn para automatizar la selección de modelos, la ingeniería de características y el ajuste de hiperparámetros.

Instrucciones:

  1. Cargue un conjunto de datos de ejemplo y divídalo en conjuntos de entrenamiento y prueba.
  2. Inicialice un clasificador de Auto-sklearn con un tiempo limitado y ajústelo con los datos de entrenamiento.
  3. Evalúe la precisión del modelo en el conjunto de prueba.

Solución:

import autosklearn.classification
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score

# Load sample dataset
data = load_iris()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42)

# Initialize Auto-sklearn classifier with time constraints
automl = autosklearn.classification.AutoSklearnClassifier(time_left_for_this_task=300, per_run_time_limit=30)
automl.fit(X_train, y_train)

# Predict and evaluate
y_pred = automl.predict(X_test)
print("Auto-sklearn Accuracy:", accuracy_score(y_test, y_pred))

En este ejemplo:

Auto-sklearn automatiza el preprocesamiento de datos, la selección de modelos y el ajuste de hiperparámetros, generando el modelo con mejor rendimiento dentro de las restricciones de tiempo especificadas.

Ejercicio 3: Optimización de una Tubería de Machine Learning con TPOT

Objetivo: Usar TPOT para construir y optimizar una tubería completa de Machine Learning, incluyendo transformaciones de características y selección de modelos.

Instrucciones:

  1. Cargue un conjunto de datos y divídalo en conjuntos de entrenamiento y prueba.
  2. Use TPOT para buscar automáticamente las mejores transformaciones de características, selección de modelos y ajustes de hiperparámetros.
  3. Evalúe el modelo recomendado por TPOT en el conjunto de prueba.

Solución:

from tpot import TPOTClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_digits
from sklearn.metrics import accuracy_score

# Load sample dataset
data = load_digits()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42)

# Initialize TPOT classifier and fit the pipeline
tpot = TPOTClassifier(generations=5, population_size=20, verbosity=2, random_state=42)
tpot.fit(X_train, y_train)

# Predict and evaluate
y_pred = tpot.predict(X_test)
print("TPOT Accuracy:", accuracy_score(y_test, y_pred))

# Export optimized pipeline code
tpot.export("optimized_pipeline.py")

En este ejercicio:

  • TPOT realiza la optimización de tuberías, incluyendo la selección de características y la elección de modelos, utilizando programación genética.
  • La tubería con mejor rendimiento se guarda como código Python, permitiendo reutilizarla en futuros proyectos.

Ejercicio 4: Usar MLBox para Limpieza de Datos y Construcción de Modelos

Objetivo: Usar MLBox para limpiar automáticamente los datos, realizar la selección de características y construir un modelo optimizado.

Instrucciones:

  1. Cargue un conjunto de datos con valores faltantes o clases desbalanceadas.
  2. Use MLBox para preprocesar, limpiar y transformar los datos.
  3. Construya y evalúe un modelo optimizado con los datos preprocesados.

Solución:

# Install MLBox if not already installed
pip install mlbox
from mlbox.preprocessing import Reader, Drift_thresholder
from mlbox.optimisation import Optimiser
from mlbox.prediction import Predictor

# Load data (MLBox requires the dataset in CSV format)
paths = ["train.csv", "test.csv"]
target_name = "target"

# Step 1: Read and preprocess data
reader = Reader(sep=",")
df = reader.train_test_split(paths, target_name)

# Step 2: Remove features with data drift
drift_thresholder = Drift_thresholder()
df = drift_thresholder.fit_transform(df)

# Step 3: Optimize model and hyperparameters
optimiser = Optimiser()
space = {
    "ne__numerical_strategy": {"search": "choice", "space": ["mean", "median"]},
    "fs__threshold": {"search": "uniform", "space": [0.01, 0.3]},
    "est__strategy": {"search": "choice", "space": ["RandomForest"]}
}
best_params = optimiser.optimise(space, df)

# Step 4: Train and evaluate the model
predictor = Predictor()
predictor.fit_predict(best_params, df)

Train.csv: https://cdn.prod.website-files.com/661b9e736a74273c4f628d5f/67d1a0c20a9ec127e908b552_train.csv

test.csv: https://cdn.prod.website-files.com/661b9e736a74273c4f628d5f/67d1a0c2fa55b9c51c5ec4cd_test.csv

En este ejercicio:

  • MLBox se encarga de la limpieza de datos, la selección de características y la optimización de modelos con una intervención manual mínima.
  • El Drift_thresholder elimina características que muestran deriva en los datos, mejorando la capacidad de generalización en datos no vistos.

Estos ejercicios muestran diversas herramientas de AutoML e ingeniería automatizada de características, desde Featuretools para la síntesis compleja de características hasta Auto-sklearn, TPOT y MLBox para la optimización automatizada de tuberías. Al aprovechar estas herramientas, puedes simplificar el proceso de ingeniería de características, permitiendo que los modelos mejoren su rendimiento con un esfuerzo manual mínimo.

8.3 Ejercicios Prácticos: Capítulo 8

Esta sección de ejercicios prácticos proporciona experiencia práctica con herramientas de AutoML, centrándose en la ingeniería automatizada de características, la selección de modelos y la optimización de tuberías. Al trabajar en estos ejercicios, desarrollará familiaridad con el uso de bibliotecas como Featuretools, Auto-sklearn y TPOT para simplificar la ingeniería de características y la construcción de modelos.

Ejercicio 1: Usar Featuretools para la Síntesis Profunda de Características

Objetivo: Crear nuevas características a partir de datos relacionales utilizando la síntesis profunda de características de Featuretools.

Instrucciones:

  1. Defina un conjunto de marcos de datos relacionados, incluyendo una tabla de clientes y una tabla de transacciones.
  2. Use Featuretools para generar características que agreguen detalles de transacciones a nivel de cliente.
  3. Muestre la matriz de características para verificar las características generadas.

Solución:

import pandas as pd
import featuretools as ft

# Sample data
customers_df = pd.DataFrame({
    'customer_id': [1, 2, 3],
    'signup_date': pd.to_datetime(['2022-01-01', '2022-02-01', '2022-03-01'])
})

transactions_df = pd.DataFrame({
    'transaction_id': [1, 2, 3, 4, 5],
    'customer_id': [1, 2, 1, 3, 2],
    'amount': [100, 200, 50, 300, 120],
    'transaction_date': pd.to_datetime(['2022-01-10', '2022-02-15', '2022-01-20', '2022-03-10', '2022-02-25'])
})

# Create an EntitySet and add dataframes
es = ft.EntitySet(id="customer_data")
es = es.add_dataframe(dataframe_name="customers", dataframe=customers_df, index="customer_id")
es = es.add_dataframe(dataframe_name="transactions", dataframe=transactions_df, index="transaction_id",
                      time_index="transaction_date")

# Define relationship and generate features
es = es.add_relationship("customers", "customer_id", "transactions", "customer_id")
feature_matrix, feature_defs = ft.dfs(entityset=es, target_dataframe_name="customers", agg_primitives=["mean", "sum", "count"])

# Display the feature matrix
print(feature_matrix.head())

En este ejercicio:

  • Definimos dos tablas y establecemos una relación entre ellas.
  • Featuretools genera automáticamente características a nivel de cliente, como el promedio y el total de montos de transacción, utilizando síntesis profunda de características.

Ejercicio 2: Ejecutar Auto-sklearn para Selección Automatizada de Modelos e Ingeniería de Características

Objetivo: Usar Auto-sklearn para automatizar la selección de modelos, la ingeniería de características y el ajuste de hiperparámetros.

Instrucciones:

  1. Cargue un conjunto de datos de ejemplo y divídalo en conjuntos de entrenamiento y prueba.
  2. Inicialice un clasificador de Auto-sklearn con un tiempo limitado y ajústelo con los datos de entrenamiento.
  3. Evalúe la precisión del modelo en el conjunto de prueba.

Solución:

import autosklearn.classification
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score

# Load sample dataset
data = load_iris()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42)

# Initialize Auto-sklearn classifier with time constraints
automl = autosklearn.classification.AutoSklearnClassifier(time_left_for_this_task=300, per_run_time_limit=30)
automl.fit(X_train, y_train)

# Predict and evaluate
y_pred = automl.predict(X_test)
print("Auto-sklearn Accuracy:", accuracy_score(y_test, y_pred))

En este ejemplo:

Auto-sklearn automatiza el preprocesamiento de datos, la selección de modelos y el ajuste de hiperparámetros, generando el modelo con mejor rendimiento dentro de las restricciones de tiempo especificadas.

Ejercicio 3: Optimización de una Tubería de Machine Learning con TPOT

Objetivo: Usar TPOT para construir y optimizar una tubería completa de Machine Learning, incluyendo transformaciones de características y selección de modelos.

Instrucciones:

  1. Cargue un conjunto de datos y divídalo en conjuntos de entrenamiento y prueba.
  2. Use TPOT para buscar automáticamente las mejores transformaciones de características, selección de modelos y ajustes de hiperparámetros.
  3. Evalúe el modelo recomendado por TPOT en el conjunto de prueba.

Solución:

from tpot import TPOTClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_digits
from sklearn.metrics import accuracy_score

# Load sample dataset
data = load_digits()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42)

# Initialize TPOT classifier and fit the pipeline
tpot = TPOTClassifier(generations=5, population_size=20, verbosity=2, random_state=42)
tpot.fit(X_train, y_train)

# Predict and evaluate
y_pred = tpot.predict(X_test)
print("TPOT Accuracy:", accuracy_score(y_test, y_pred))

# Export optimized pipeline code
tpot.export("optimized_pipeline.py")

En este ejercicio:

  • TPOT realiza la optimización de tuberías, incluyendo la selección de características y la elección de modelos, utilizando programación genética.
  • La tubería con mejor rendimiento se guarda como código Python, permitiendo reutilizarla en futuros proyectos.

Ejercicio 4: Usar MLBox para Limpieza de Datos y Construcción de Modelos

Objetivo: Usar MLBox para limpiar automáticamente los datos, realizar la selección de características y construir un modelo optimizado.

Instrucciones:

  1. Cargue un conjunto de datos con valores faltantes o clases desbalanceadas.
  2. Use MLBox para preprocesar, limpiar y transformar los datos.
  3. Construya y evalúe un modelo optimizado con los datos preprocesados.

Solución:

# Install MLBox if not already installed
pip install mlbox
from mlbox.preprocessing import Reader, Drift_thresholder
from mlbox.optimisation import Optimiser
from mlbox.prediction import Predictor

# Load data (MLBox requires the dataset in CSV format)
paths = ["train.csv", "test.csv"]
target_name = "target"

# Step 1: Read and preprocess data
reader = Reader(sep=",")
df = reader.train_test_split(paths, target_name)

# Step 2: Remove features with data drift
drift_thresholder = Drift_thresholder()
df = drift_thresholder.fit_transform(df)

# Step 3: Optimize model and hyperparameters
optimiser = Optimiser()
space = {
    "ne__numerical_strategy": {"search": "choice", "space": ["mean", "median"]},
    "fs__threshold": {"search": "uniform", "space": [0.01, 0.3]},
    "est__strategy": {"search": "choice", "space": ["RandomForest"]}
}
best_params = optimiser.optimise(space, df)

# Step 4: Train and evaluate the model
predictor = Predictor()
predictor.fit_predict(best_params, df)

Train.csv: https://cdn.prod.website-files.com/661b9e736a74273c4f628d5f/67d1a0c20a9ec127e908b552_train.csv

test.csv: https://cdn.prod.website-files.com/661b9e736a74273c4f628d5f/67d1a0c2fa55b9c51c5ec4cd_test.csv

En este ejercicio:

  • MLBox se encarga de la limpieza de datos, la selección de características y la optimización de modelos con una intervención manual mínima.
  • El Drift_thresholder elimina características que muestran deriva en los datos, mejorando la capacidad de generalización en datos no vistos.

Estos ejercicios muestran diversas herramientas de AutoML e ingeniería automatizada de características, desde Featuretools para la síntesis compleja de características hasta Auto-sklearn, TPOT y MLBox para la optimización automatizada de tuberías. Al aprovechar estas herramientas, puedes simplificar el proceso de ingeniería de características, permitiendo que los modelos mejoren su rendimiento con un esfuerzo manual mínimo.

8.3 Ejercicios Prácticos: Capítulo 8

Esta sección de ejercicios prácticos proporciona experiencia práctica con herramientas de AutoML, centrándose en la ingeniería automatizada de características, la selección de modelos y la optimización de tuberías. Al trabajar en estos ejercicios, desarrollará familiaridad con el uso de bibliotecas como Featuretools, Auto-sklearn y TPOT para simplificar la ingeniería de características y la construcción de modelos.

Ejercicio 1: Usar Featuretools para la Síntesis Profunda de Características

Objetivo: Crear nuevas características a partir de datos relacionales utilizando la síntesis profunda de características de Featuretools.

Instrucciones:

  1. Defina un conjunto de marcos de datos relacionados, incluyendo una tabla de clientes y una tabla de transacciones.
  2. Use Featuretools para generar características que agreguen detalles de transacciones a nivel de cliente.
  3. Muestre la matriz de características para verificar las características generadas.

Solución:

import pandas as pd
import featuretools as ft

# Sample data
customers_df = pd.DataFrame({
    'customer_id': [1, 2, 3],
    'signup_date': pd.to_datetime(['2022-01-01', '2022-02-01', '2022-03-01'])
})

transactions_df = pd.DataFrame({
    'transaction_id': [1, 2, 3, 4, 5],
    'customer_id': [1, 2, 1, 3, 2],
    'amount': [100, 200, 50, 300, 120],
    'transaction_date': pd.to_datetime(['2022-01-10', '2022-02-15', '2022-01-20', '2022-03-10', '2022-02-25'])
})

# Create an EntitySet and add dataframes
es = ft.EntitySet(id="customer_data")
es = es.add_dataframe(dataframe_name="customers", dataframe=customers_df, index="customer_id")
es = es.add_dataframe(dataframe_name="transactions", dataframe=transactions_df, index="transaction_id",
                      time_index="transaction_date")

# Define relationship and generate features
es = es.add_relationship("customers", "customer_id", "transactions", "customer_id")
feature_matrix, feature_defs = ft.dfs(entityset=es, target_dataframe_name="customers", agg_primitives=["mean", "sum", "count"])

# Display the feature matrix
print(feature_matrix.head())

En este ejercicio:

  • Definimos dos tablas y establecemos una relación entre ellas.
  • Featuretools genera automáticamente características a nivel de cliente, como el promedio y el total de montos de transacción, utilizando síntesis profunda de características.

Ejercicio 2: Ejecutar Auto-sklearn para Selección Automatizada de Modelos e Ingeniería de Características

Objetivo: Usar Auto-sklearn para automatizar la selección de modelos, la ingeniería de características y el ajuste de hiperparámetros.

Instrucciones:

  1. Cargue un conjunto de datos de ejemplo y divídalo en conjuntos de entrenamiento y prueba.
  2. Inicialice un clasificador de Auto-sklearn con un tiempo limitado y ajústelo con los datos de entrenamiento.
  3. Evalúe la precisión del modelo en el conjunto de prueba.

Solución:

import autosklearn.classification
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score

# Load sample dataset
data = load_iris()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42)

# Initialize Auto-sklearn classifier with time constraints
automl = autosklearn.classification.AutoSklearnClassifier(time_left_for_this_task=300, per_run_time_limit=30)
automl.fit(X_train, y_train)

# Predict and evaluate
y_pred = automl.predict(X_test)
print("Auto-sklearn Accuracy:", accuracy_score(y_test, y_pred))

En este ejemplo:

Auto-sklearn automatiza el preprocesamiento de datos, la selección de modelos y el ajuste de hiperparámetros, generando el modelo con mejor rendimiento dentro de las restricciones de tiempo especificadas.

Ejercicio 3: Optimización de una Tubería de Machine Learning con TPOT

Objetivo: Usar TPOT para construir y optimizar una tubería completa de Machine Learning, incluyendo transformaciones de características y selección de modelos.

Instrucciones:

  1. Cargue un conjunto de datos y divídalo en conjuntos de entrenamiento y prueba.
  2. Use TPOT para buscar automáticamente las mejores transformaciones de características, selección de modelos y ajustes de hiperparámetros.
  3. Evalúe el modelo recomendado por TPOT en el conjunto de prueba.

Solución:

from tpot import TPOTClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_digits
from sklearn.metrics import accuracy_score

# Load sample dataset
data = load_digits()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42)

# Initialize TPOT classifier and fit the pipeline
tpot = TPOTClassifier(generations=5, population_size=20, verbosity=2, random_state=42)
tpot.fit(X_train, y_train)

# Predict and evaluate
y_pred = tpot.predict(X_test)
print("TPOT Accuracy:", accuracy_score(y_test, y_pred))

# Export optimized pipeline code
tpot.export("optimized_pipeline.py")

En este ejercicio:

  • TPOT realiza la optimización de tuberías, incluyendo la selección de características y la elección de modelos, utilizando programación genética.
  • La tubería con mejor rendimiento se guarda como código Python, permitiendo reutilizarla en futuros proyectos.

Ejercicio 4: Usar MLBox para Limpieza de Datos y Construcción de Modelos

Objetivo: Usar MLBox para limpiar automáticamente los datos, realizar la selección de características y construir un modelo optimizado.

Instrucciones:

  1. Cargue un conjunto de datos con valores faltantes o clases desbalanceadas.
  2. Use MLBox para preprocesar, limpiar y transformar los datos.
  3. Construya y evalúe un modelo optimizado con los datos preprocesados.

Solución:

# Install MLBox if not already installed
pip install mlbox
from mlbox.preprocessing import Reader, Drift_thresholder
from mlbox.optimisation import Optimiser
from mlbox.prediction import Predictor

# Load data (MLBox requires the dataset in CSV format)
paths = ["train.csv", "test.csv"]
target_name = "target"

# Step 1: Read and preprocess data
reader = Reader(sep=",")
df = reader.train_test_split(paths, target_name)

# Step 2: Remove features with data drift
drift_thresholder = Drift_thresholder()
df = drift_thresholder.fit_transform(df)

# Step 3: Optimize model and hyperparameters
optimiser = Optimiser()
space = {
    "ne__numerical_strategy": {"search": "choice", "space": ["mean", "median"]},
    "fs__threshold": {"search": "uniform", "space": [0.01, 0.3]},
    "est__strategy": {"search": "choice", "space": ["RandomForest"]}
}
best_params = optimiser.optimise(space, df)

# Step 4: Train and evaluate the model
predictor = Predictor()
predictor.fit_predict(best_params, df)

Train.csv: https://cdn.prod.website-files.com/661b9e736a74273c4f628d5f/67d1a0c20a9ec127e908b552_train.csv

test.csv: https://cdn.prod.website-files.com/661b9e736a74273c4f628d5f/67d1a0c2fa55b9c51c5ec4cd_test.csv

En este ejercicio:

  • MLBox se encarga de la limpieza de datos, la selección de características y la optimización de modelos con una intervención manual mínima.
  • El Drift_thresholder elimina características que muestran deriva en los datos, mejorando la capacidad de generalización en datos no vistos.

Estos ejercicios muestran diversas herramientas de AutoML e ingeniería automatizada de características, desde Featuretools para la síntesis compleja de características hasta Auto-sklearn, TPOT y MLBox para la optimización automatizada de tuberías. Al aprovechar estas herramientas, puedes simplificar el proceso de ingeniería de características, permitiendo que los modelos mejoren su rendimiento con un esfuerzo manual mínimo.

8.3 Ejercicios Prácticos: Capítulo 8

Esta sección de ejercicios prácticos proporciona experiencia práctica con herramientas de AutoML, centrándose en la ingeniería automatizada de características, la selección de modelos y la optimización de tuberías. Al trabajar en estos ejercicios, desarrollará familiaridad con el uso de bibliotecas como Featuretools, Auto-sklearn y TPOT para simplificar la ingeniería de características y la construcción de modelos.

Ejercicio 1: Usar Featuretools para la Síntesis Profunda de Características

Objetivo: Crear nuevas características a partir de datos relacionales utilizando la síntesis profunda de características de Featuretools.

Instrucciones:

  1. Defina un conjunto de marcos de datos relacionados, incluyendo una tabla de clientes y una tabla de transacciones.
  2. Use Featuretools para generar características que agreguen detalles de transacciones a nivel de cliente.
  3. Muestre la matriz de características para verificar las características generadas.

Solución:

import pandas as pd
import featuretools as ft

# Sample data
customers_df = pd.DataFrame({
    'customer_id': [1, 2, 3],
    'signup_date': pd.to_datetime(['2022-01-01', '2022-02-01', '2022-03-01'])
})

transactions_df = pd.DataFrame({
    'transaction_id': [1, 2, 3, 4, 5],
    'customer_id': [1, 2, 1, 3, 2],
    'amount': [100, 200, 50, 300, 120],
    'transaction_date': pd.to_datetime(['2022-01-10', '2022-02-15', '2022-01-20', '2022-03-10', '2022-02-25'])
})

# Create an EntitySet and add dataframes
es = ft.EntitySet(id="customer_data")
es = es.add_dataframe(dataframe_name="customers", dataframe=customers_df, index="customer_id")
es = es.add_dataframe(dataframe_name="transactions", dataframe=transactions_df, index="transaction_id",
                      time_index="transaction_date")

# Define relationship and generate features
es = es.add_relationship("customers", "customer_id", "transactions", "customer_id")
feature_matrix, feature_defs = ft.dfs(entityset=es, target_dataframe_name="customers", agg_primitives=["mean", "sum", "count"])

# Display the feature matrix
print(feature_matrix.head())

En este ejercicio:

  • Definimos dos tablas y establecemos una relación entre ellas.
  • Featuretools genera automáticamente características a nivel de cliente, como el promedio y el total de montos de transacción, utilizando síntesis profunda de características.

Ejercicio 2: Ejecutar Auto-sklearn para Selección Automatizada de Modelos e Ingeniería de Características

Objetivo: Usar Auto-sklearn para automatizar la selección de modelos, la ingeniería de características y el ajuste de hiperparámetros.

Instrucciones:

  1. Cargue un conjunto de datos de ejemplo y divídalo en conjuntos de entrenamiento y prueba.
  2. Inicialice un clasificador de Auto-sklearn con un tiempo limitado y ajústelo con los datos de entrenamiento.
  3. Evalúe la precisión del modelo en el conjunto de prueba.

Solución:

import autosklearn.classification
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score

# Load sample dataset
data = load_iris()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42)

# Initialize Auto-sklearn classifier with time constraints
automl = autosklearn.classification.AutoSklearnClassifier(time_left_for_this_task=300, per_run_time_limit=30)
automl.fit(X_train, y_train)

# Predict and evaluate
y_pred = automl.predict(X_test)
print("Auto-sklearn Accuracy:", accuracy_score(y_test, y_pred))

En este ejemplo:

Auto-sklearn automatiza el preprocesamiento de datos, la selección de modelos y el ajuste de hiperparámetros, generando el modelo con mejor rendimiento dentro de las restricciones de tiempo especificadas.

Ejercicio 3: Optimización de una Tubería de Machine Learning con TPOT

Objetivo: Usar TPOT para construir y optimizar una tubería completa de Machine Learning, incluyendo transformaciones de características y selección de modelos.

Instrucciones:

  1. Cargue un conjunto de datos y divídalo en conjuntos de entrenamiento y prueba.
  2. Use TPOT para buscar automáticamente las mejores transformaciones de características, selección de modelos y ajustes de hiperparámetros.
  3. Evalúe el modelo recomendado por TPOT en el conjunto de prueba.

Solución:

from tpot import TPOTClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_digits
from sklearn.metrics import accuracy_score

# Load sample dataset
data = load_digits()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42)

# Initialize TPOT classifier and fit the pipeline
tpot = TPOTClassifier(generations=5, population_size=20, verbosity=2, random_state=42)
tpot.fit(X_train, y_train)

# Predict and evaluate
y_pred = tpot.predict(X_test)
print("TPOT Accuracy:", accuracy_score(y_test, y_pred))

# Export optimized pipeline code
tpot.export("optimized_pipeline.py")

En este ejercicio:

  • TPOT realiza la optimización de tuberías, incluyendo la selección de características y la elección de modelos, utilizando programación genética.
  • La tubería con mejor rendimiento se guarda como código Python, permitiendo reutilizarla en futuros proyectos.

Ejercicio 4: Usar MLBox para Limpieza de Datos y Construcción de Modelos

Objetivo: Usar MLBox para limpiar automáticamente los datos, realizar la selección de características y construir un modelo optimizado.

Instrucciones:

  1. Cargue un conjunto de datos con valores faltantes o clases desbalanceadas.
  2. Use MLBox para preprocesar, limpiar y transformar los datos.
  3. Construya y evalúe un modelo optimizado con los datos preprocesados.

Solución:

# Install MLBox if not already installed
pip install mlbox
from mlbox.preprocessing import Reader, Drift_thresholder
from mlbox.optimisation import Optimiser
from mlbox.prediction import Predictor

# Load data (MLBox requires the dataset in CSV format)
paths = ["train.csv", "test.csv"]
target_name = "target"

# Step 1: Read and preprocess data
reader = Reader(sep=",")
df = reader.train_test_split(paths, target_name)

# Step 2: Remove features with data drift
drift_thresholder = Drift_thresholder()
df = drift_thresholder.fit_transform(df)

# Step 3: Optimize model and hyperparameters
optimiser = Optimiser()
space = {
    "ne__numerical_strategy": {"search": "choice", "space": ["mean", "median"]},
    "fs__threshold": {"search": "uniform", "space": [0.01, 0.3]},
    "est__strategy": {"search": "choice", "space": ["RandomForest"]}
}
best_params = optimiser.optimise(space, df)

# Step 4: Train and evaluate the model
predictor = Predictor()
predictor.fit_predict(best_params, df)

Train.csv: https://cdn.prod.website-files.com/661b9e736a74273c4f628d5f/67d1a0c20a9ec127e908b552_train.csv

test.csv: https://cdn.prod.website-files.com/661b9e736a74273c4f628d5f/67d1a0c2fa55b9c51c5ec4cd_test.csv

En este ejercicio:

  • MLBox se encarga de la limpieza de datos, la selección de características y la optimización de modelos con una intervención manual mínima.
  • El Drift_thresholder elimina características que muestran deriva en los datos, mejorando la capacidad de generalización en datos no vistos.

Estos ejercicios muestran diversas herramientas de AutoML e ingeniería automatizada de características, desde Featuretools para la síntesis compleja de características hasta Auto-sklearn, TPOT y MLBox para la optimización automatizada de tuberías. Al aprovechar estas herramientas, puedes simplificar el proceso de ingeniería de características, permitiendo que los modelos mejoren su rendimiento con un esfuerzo manual mínimo.