Menu iconMenu icon
Fundamentos de Ingeniería de Datos

Capítulo 1: Introducción: Más allá de lo básico

1.4 Ejercicios Prácticos para el Capítulo 1: Introducción: Avanzando Más Allá de los Fundamentos

Ahora que has completado el Capítulo 1, es momento de aplicar lo que has aprendido. Estos ejercicios están diseñados para ayudarte a reforzar los conceptos discutidos y ponerlos en práctica. Cada ejercicio incluye un problema y un bloque de solución de código donde sea necesario. Intenta resolver los ejercicios por tu cuenta antes de revisar las soluciones.

Ejercicio 1: Filtrado y Agregación de Datos con Pandas

Se te proporciona un conjunto de datos de compras de clientes en diferentes tiendas. Tu tarea es:

  1. Filtrar el conjunto de datos para mostrar solo las transacciones donde el monto de la compra supera los $200.
  2. Agrupar las transacciones por tienda y calcular el monto total y promedio de compra por tienda.
# Sample data
data = {'TransactionID': [101, 102, 103, 104, 105],
        'Store': ['A', 'B', 'A', 'C', 'B'],
        'PurchaseAmount': [250, 120, 340, 400, 200],
        'Discount': [10, 15, 20, 25, 5]}

df = pd.DataFrame(data)

# Solution
# Step 1: Filter transactions where PurchaseAmount > 200
filtered_df = df[df['PurchaseAmount'] > 200]

# Step 2: Group by Store and calculate total and average purchase amounts
df['NetPurchase'] = df['PurchaseAmount'] - df['Discount']
agg_purchases = df.groupby('Store').agg(
    TotalPurchase=('NetPurchase', 'sum'),
    AvgPurchase=('NetPurchase', 'mean')
)

print(filtered_df)
print(agg_purchases)

Ejercicio 2: Aplicación de una Transformación Logarítmica con NumPy

Tienes un conjunto de datos de ventas de productos con los siguientes valores: [100, 200, 50, 400, 300].

  1. Usa NumPy para calcular la transformación logarítmica de los valores de ventas.
  2. Imprime los valores transformados.
import numpy as np

# Sales data
sales = [100, 200, 50, 400, 300]

# Solution
# Step 1: Apply logarithmic transformation
log_sales = np.log(sales)

print(log_sales)

Ejercicio 3: Estandarización de Datos de Ventas con NumPy

Dado el mismo conjunto de datos de ventas del Ejercicio 2, estandariza los valores calculando el puntaje Z para cada monto de venta.

  1. Calcula la media y la desviación estándar de los datos de ventas.
  2. Usa NumPy para calcular el puntaje Z para cada venta.
# Sales data
sales = [100, 200, 50, 400, 300]

# Solution
# Step 1: Calculate mean and standard deviation
mean_sales = np.mean(sales)
std_sales = np.std(sales)

# Step 2: Calculate Z-scores
z_scores = (sales - mean_sales) / std_sales

print(z_scores)

Ejercicio 4: Construcción de un Modelo de Clasificación con Scikit-learn

Tienes un conjunto de datos de transacciones, donde cada transacción tiene un monto de venta y un descuento. Tu objetivo es construir un modelo de clasificación simple para predecir si una transacción tiene un valor de venta alto (superior a $250) o no.

  1. Crea una variable objetivo (HighSales) donde una venta se clasifique como 1 si el monto de la venta es superior a 250, y 0 en caso contrario.
  2. Usa Scikit-learn para construir un modelo de bosque aleatorio que prediga HighSales en función de SalesAmount y Discount.
  3. Divide el conjunto de datos en conjuntos de entrenamiento y prueba.
  4. Entrena el modelo y muestra las predicciones para el conjunto de prueba.
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
import pandas as pd
import numpy as np

# Sample data
data = {'TransactionID': [101, 102, 103, 104, 105],
        'SalesAmount': [250, np.nan, 340, 400, 200],
        'Discount': [10, 15, 20, np.nan, 5],
        'Store': ['A', 'B', 'A', 'C', 'B']}

df = pd.DataFrame(data)

# Solution
# Step 1: Handle missing values
df['SalesAmount'].fillna(df['SalesAmount'].mean(), inplace=True)
df['Discount'].fillna(df['Discount'].mean(), inplace=True)

# Step 2: Create target variable 'HighSales'
df['HighSales'] = (df['SalesAmount'] > 250).astype(int)

# Step 3: Define features and target
X = df[['SalesAmount', 'Discount']]
y = df['HighSales']

# Step 4: Split data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Step 5: Train a Random Forest model
clf = RandomForestClassifier(random_state=42)
clf.fit(X_train, y_train)

# Step 6: Predict on test set
y_pred = clf.predict(X_test)

print("Predictions:", y_pred)

Ejercicio 5: Combinación de Pandas, NumPy y Scikit-learn en un Flujo de Trabajo

Estás trabajando con un conjunto de datos de transacciones de clientes. Tu tarea es:

  1. Manejar los valores faltantes en las columnas SalesAmount y Discount.
  2. Aplicar una transformación logarítmica a SalesAmount usando NumPy.
  3. Construir un modelo de clasificación con Scikit-learn para predecir si una transacción es de alto valor (HighSales).
  4. Dividir el conjunto de datos en conjuntos de entrenamiento y prueba.
  5. Entrenar el modelo y hacer predicciones en el conjunto de prueba.
# Sample data
data = {'TransactionID': [101, 102, 103, 104, 105],
        'SalesAmount': [250, np.nan, 340, 400, 200],
        'Discount': [10, 15, 20, np.nan, 5],
        'Store': ['A', 'B', 'A', 'C', 'B']}

df = pd.DataFrame(data)

# Solution
# Step 1: Handle missing values using Pandas
df['SalesAmount'].fillna(df['SalesAmount'].mean(), inplace=True)
df['Discount'].fillna(df['Discount'].mean(), inplace=True)

# Step 2: Apply logarithmic transformation to SalesAmount
df['LogSales'] = np.log(df['SalesAmount'])

# Step 3: Create target variable 'HighSales'
df['HighSales'] = (df['SalesAmount'] > 250).astype(int)

# Step 4: Define features and target
X = df[['SalesAmount', 'Discount', 'LogSales']]
y = df['HighSales']

# Step 5: Split data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Step 6: Train a Random Forest model
clf = RandomForestClassifier(random_state=42)
clf.fit(X_train, y_train)

# Step 7: Predict on test set
y_pred = clf.predict(X_test)

print("Predictions:", y_pred)

Estas prácticas abarcan los conceptos esenciales discutidos en el Capítulo 1, brindándote la oportunidad de practicar filtrado de datos, transformación de características y construcción de modelos de aprendizaje automático. Las soluciones proporcionadas ayudan a reforzar tu comprensión y aseguran que estás en el camino correcto. Sigue practicando y no dudes en explorar diferentes conjuntos de datos y variaciones de estas tareas.

1.4 Ejercicios Prácticos para el Capítulo 1: Introducción: Avanzando Más Allá de los Fundamentos

Ahora que has completado el Capítulo 1, es momento de aplicar lo que has aprendido. Estos ejercicios están diseñados para ayudarte a reforzar los conceptos discutidos y ponerlos en práctica. Cada ejercicio incluye un problema y un bloque de solución de código donde sea necesario. Intenta resolver los ejercicios por tu cuenta antes de revisar las soluciones.

Ejercicio 1: Filtrado y Agregación de Datos con Pandas

Se te proporciona un conjunto de datos de compras de clientes en diferentes tiendas. Tu tarea es:

  1. Filtrar el conjunto de datos para mostrar solo las transacciones donde el monto de la compra supera los $200.
  2. Agrupar las transacciones por tienda y calcular el monto total y promedio de compra por tienda.
# Sample data
data = {'TransactionID': [101, 102, 103, 104, 105],
        'Store': ['A', 'B', 'A', 'C', 'B'],
        'PurchaseAmount': [250, 120, 340, 400, 200],
        'Discount': [10, 15, 20, 25, 5]}

df = pd.DataFrame(data)

# Solution
# Step 1: Filter transactions where PurchaseAmount > 200
filtered_df = df[df['PurchaseAmount'] > 200]

# Step 2: Group by Store and calculate total and average purchase amounts
df['NetPurchase'] = df['PurchaseAmount'] - df['Discount']
agg_purchases = df.groupby('Store').agg(
    TotalPurchase=('NetPurchase', 'sum'),
    AvgPurchase=('NetPurchase', 'mean')
)

print(filtered_df)
print(agg_purchases)

Ejercicio 2: Aplicación de una Transformación Logarítmica con NumPy

Tienes un conjunto de datos de ventas de productos con los siguientes valores: [100, 200, 50, 400, 300].

  1. Usa NumPy para calcular la transformación logarítmica de los valores de ventas.
  2. Imprime los valores transformados.
import numpy as np

# Sales data
sales = [100, 200, 50, 400, 300]

# Solution
# Step 1: Apply logarithmic transformation
log_sales = np.log(sales)

print(log_sales)

Ejercicio 3: Estandarización de Datos de Ventas con NumPy

Dado el mismo conjunto de datos de ventas del Ejercicio 2, estandariza los valores calculando el puntaje Z para cada monto de venta.

  1. Calcula la media y la desviación estándar de los datos de ventas.
  2. Usa NumPy para calcular el puntaje Z para cada venta.
# Sales data
sales = [100, 200, 50, 400, 300]

# Solution
# Step 1: Calculate mean and standard deviation
mean_sales = np.mean(sales)
std_sales = np.std(sales)

# Step 2: Calculate Z-scores
z_scores = (sales - mean_sales) / std_sales

print(z_scores)

Ejercicio 4: Construcción de un Modelo de Clasificación con Scikit-learn

Tienes un conjunto de datos de transacciones, donde cada transacción tiene un monto de venta y un descuento. Tu objetivo es construir un modelo de clasificación simple para predecir si una transacción tiene un valor de venta alto (superior a $250) o no.

  1. Crea una variable objetivo (HighSales) donde una venta se clasifique como 1 si el monto de la venta es superior a 250, y 0 en caso contrario.
  2. Usa Scikit-learn para construir un modelo de bosque aleatorio que prediga HighSales en función de SalesAmount y Discount.
  3. Divide el conjunto de datos en conjuntos de entrenamiento y prueba.
  4. Entrena el modelo y muestra las predicciones para el conjunto de prueba.
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
import pandas as pd
import numpy as np

# Sample data
data = {'TransactionID': [101, 102, 103, 104, 105],
        'SalesAmount': [250, np.nan, 340, 400, 200],
        'Discount': [10, 15, 20, np.nan, 5],
        'Store': ['A', 'B', 'A', 'C', 'B']}

df = pd.DataFrame(data)

# Solution
# Step 1: Handle missing values
df['SalesAmount'].fillna(df['SalesAmount'].mean(), inplace=True)
df['Discount'].fillna(df['Discount'].mean(), inplace=True)

# Step 2: Create target variable 'HighSales'
df['HighSales'] = (df['SalesAmount'] > 250).astype(int)

# Step 3: Define features and target
X = df[['SalesAmount', 'Discount']]
y = df['HighSales']

# Step 4: Split data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Step 5: Train a Random Forest model
clf = RandomForestClassifier(random_state=42)
clf.fit(X_train, y_train)

# Step 6: Predict on test set
y_pred = clf.predict(X_test)

print("Predictions:", y_pred)

Ejercicio 5: Combinación de Pandas, NumPy y Scikit-learn en un Flujo de Trabajo

Estás trabajando con un conjunto de datos de transacciones de clientes. Tu tarea es:

  1. Manejar los valores faltantes en las columnas SalesAmount y Discount.
  2. Aplicar una transformación logarítmica a SalesAmount usando NumPy.
  3. Construir un modelo de clasificación con Scikit-learn para predecir si una transacción es de alto valor (HighSales).
  4. Dividir el conjunto de datos en conjuntos de entrenamiento y prueba.
  5. Entrenar el modelo y hacer predicciones en el conjunto de prueba.
# Sample data
data = {'TransactionID': [101, 102, 103, 104, 105],
        'SalesAmount': [250, np.nan, 340, 400, 200],
        'Discount': [10, 15, 20, np.nan, 5],
        'Store': ['A', 'B', 'A', 'C', 'B']}

df = pd.DataFrame(data)

# Solution
# Step 1: Handle missing values using Pandas
df['SalesAmount'].fillna(df['SalesAmount'].mean(), inplace=True)
df['Discount'].fillna(df['Discount'].mean(), inplace=True)

# Step 2: Apply logarithmic transformation to SalesAmount
df['LogSales'] = np.log(df['SalesAmount'])

# Step 3: Create target variable 'HighSales'
df['HighSales'] = (df['SalesAmount'] > 250).astype(int)

# Step 4: Define features and target
X = df[['SalesAmount', 'Discount', 'LogSales']]
y = df['HighSales']

# Step 5: Split data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Step 6: Train a Random Forest model
clf = RandomForestClassifier(random_state=42)
clf.fit(X_train, y_train)

# Step 7: Predict on test set
y_pred = clf.predict(X_test)

print("Predictions:", y_pred)

Estas prácticas abarcan los conceptos esenciales discutidos en el Capítulo 1, brindándote la oportunidad de practicar filtrado de datos, transformación de características y construcción de modelos de aprendizaje automático. Las soluciones proporcionadas ayudan a reforzar tu comprensión y aseguran que estás en el camino correcto. Sigue practicando y no dudes en explorar diferentes conjuntos de datos y variaciones de estas tareas.

1.4 Ejercicios Prácticos para el Capítulo 1: Introducción: Avanzando Más Allá de los Fundamentos

Ahora que has completado el Capítulo 1, es momento de aplicar lo que has aprendido. Estos ejercicios están diseñados para ayudarte a reforzar los conceptos discutidos y ponerlos en práctica. Cada ejercicio incluye un problema y un bloque de solución de código donde sea necesario. Intenta resolver los ejercicios por tu cuenta antes de revisar las soluciones.

Ejercicio 1: Filtrado y Agregación de Datos con Pandas

Se te proporciona un conjunto de datos de compras de clientes en diferentes tiendas. Tu tarea es:

  1. Filtrar el conjunto de datos para mostrar solo las transacciones donde el monto de la compra supera los $200.
  2. Agrupar las transacciones por tienda y calcular el monto total y promedio de compra por tienda.
# Sample data
data = {'TransactionID': [101, 102, 103, 104, 105],
        'Store': ['A', 'B', 'A', 'C', 'B'],
        'PurchaseAmount': [250, 120, 340, 400, 200],
        'Discount': [10, 15, 20, 25, 5]}

df = pd.DataFrame(data)

# Solution
# Step 1: Filter transactions where PurchaseAmount > 200
filtered_df = df[df['PurchaseAmount'] > 200]

# Step 2: Group by Store and calculate total and average purchase amounts
df['NetPurchase'] = df['PurchaseAmount'] - df['Discount']
agg_purchases = df.groupby('Store').agg(
    TotalPurchase=('NetPurchase', 'sum'),
    AvgPurchase=('NetPurchase', 'mean')
)

print(filtered_df)
print(agg_purchases)

Ejercicio 2: Aplicación de una Transformación Logarítmica con NumPy

Tienes un conjunto de datos de ventas de productos con los siguientes valores: [100, 200, 50, 400, 300].

  1. Usa NumPy para calcular la transformación logarítmica de los valores de ventas.
  2. Imprime los valores transformados.
import numpy as np

# Sales data
sales = [100, 200, 50, 400, 300]

# Solution
# Step 1: Apply logarithmic transformation
log_sales = np.log(sales)

print(log_sales)

Ejercicio 3: Estandarización de Datos de Ventas con NumPy

Dado el mismo conjunto de datos de ventas del Ejercicio 2, estandariza los valores calculando el puntaje Z para cada monto de venta.

  1. Calcula la media y la desviación estándar de los datos de ventas.
  2. Usa NumPy para calcular el puntaje Z para cada venta.
# Sales data
sales = [100, 200, 50, 400, 300]

# Solution
# Step 1: Calculate mean and standard deviation
mean_sales = np.mean(sales)
std_sales = np.std(sales)

# Step 2: Calculate Z-scores
z_scores = (sales - mean_sales) / std_sales

print(z_scores)

Ejercicio 4: Construcción de un Modelo de Clasificación con Scikit-learn

Tienes un conjunto de datos de transacciones, donde cada transacción tiene un monto de venta y un descuento. Tu objetivo es construir un modelo de clasificación simple para predecir si una transacción tiene un valor de venta alto (superior a $250) o no.

  1. Crea una variable objetivo (HighSales) donde una venta se clasifique como 1 si el monto de la venta es superior a 250, y 0 en caso contrario.
  2. Usa Scikit-learn para construir un modelo de bosque aleatorio que prediga HighSales en función de SalesAmount y Discount.
  3. Divide el conjunto de datos en conjuntos de entrenamiento y prueba.
  4. Entrena el modelo y muestra las predicciones para el conjunto de prueba.
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
import pandas as pd
import numpy as np

# Sample data
data = {'TransactionID': [101, 102, 103, 104, 105],
        'SalesAmount': [250, np.nan, 340, 400, 200],
        'Discount': [10, 15, 20, np.nan, 5],
        'Store': ['A', 'B', 'A', 'C', 'B']}

df = pd.DataFrame(data)

# Solution
# Step 1: Handle missing values
df['SalesAmount'].fillna(df['SalesAmount'].mean(), inplace=True)
df['Discount'].fillna(df['Discount'].mean(), inplace=True)

# Step 2: Create target variable 'HighSales'
df['HighSales'] = (df['SalesAmount'] > 250).astype(int)

# Step 3: Define features and target
X = df[['SalesAmount', 'Discount']]
y = df['HighSales']

# Step 4: Split data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Step 5: Train a Random Forest model
clf = RandomForestClassifier(random_state=42)
clf.fit(X_train, y_train)

# Step 6: Predict on test set
y_pred = clf.predict(X_test)

print("Predictions:", y_pred)

Ejercicio 5: Combinación de Pandas, NumPy y Scikit-learn en un Flujo de Trabajo

Estás trabajando con un conjunto de datos de transacciones de clientes. Tu tarea es:

  1. Manejar los valores faltantes en las columnas SalesAmount y Discount.
  2. Aplicar una transformación logarítmica a SalesAmount usando NumPy.
  3. Construir un modelo de clasificación con Scikit-learn para predecir si una transacción es de alto valor (HighSales).
  4. Dividir el conjunto de datos en conjuntos de entrenamiento y prueba.
  5. Entrenar el modelo y hacer predicciones en el conjunto de prueba.
# Sample data
data = {'TransactionID': [101, 102, 103, 104, 105],
        'SalesAmount': [250, np.nan, 340, 400, 200],
        'Discount': [10, 15, 20, np.nan, 5],
        'Store': ['A', 'B', 'A', 'C', 'B']}

df = pd.DataFrame(data)

# Solution
# Step 1: Handle missing values using Pandas
df['SalesAmount'].fillna(df['SalesAmount'].mean(), inplace=True)
df['Discount'].fillna(df['Discount'].mean(), inplace=True)

# Step 2: Apply logarithmic transformation to SalesAmount
df['LogSales'] = np.log(df['SalesAmount'])

# Step 3: Create target variable 'HighSales'
df['HighSales'] = (df['SalesAmount'] > 250).astype(int)

# Step 4: Define features and target
X = df[['SalesAmount', 'Discount', 'LogSales']]
y = df['HighSales']

# Step 5: Split data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Step 6: Train a Random Forest model
clf = RandomForestClassifier(random_state=42)
clf.fit(X_train, y_train)

# Step 7: Predict on test set
y_pred = clf.predict(X_test)

print("Predictions:", y_pred)

Estas prácticas abarcan los conceptos esenciales discutidos en el Capítulo 1, brindándote la oportunidad de practicar filtrado de datos, transformación de características y construcción de modelos de aprendizaje automático. Las soluciones proporcionadas ayudan a reforzar tu comprensión y aseguran que estás en el camino correcto. Sigue practicando y no dudes en explorar diferentes conjuntos de datos y variaciones de estas tareas.

1.4 Ejercicios Prácticos para el Capítulo 1: Introducción: Avanzando Más Allá de los Fundamentos

Ahora que has completado el Capítulo 1, es momento de aplicar lo que has aprendido. Estos ejercicios están diseñados para ayudarte a reforzar los conceptos discutidos y ponerlos en práctica. Cada ejercicio incluye un problema y un bloque de solución de código donde sea necesario. Intenta resolver los ejercicios por tu cuenta antes de revisar las soluciones.

Ejercicio 1: Filtrado y Agregación de Datos con Pandas

Se te proporciona un conjunto de datos de compras de clientes en diferentes tiendas. Tu tarea es:

  1. Filtrar el conjunto de datos para mostrar solo las transacciones donde el monto de la compra supera los $200.
  2. Agrupar las transacciones por tienda y calcular el monto total y promedio de compra por tienda.
# Sample data
data = {'TransactionID': [101, 102, 103, 104, 105],
        'Store': ['A', 'B', 'A', 'C', 'B'],
        'PurchaseAmount': [250, 120, 340, 400, 200],
        'Discount': [10, 15, 20, 25, 5]}

df = pd.DataFrame(data)

# Solution
# Step 1: Filter transactions where PurchaseAmount > 200
filtered_df = df[df['PurchaseAmount'] > 200]

# Step 2: Group by Store and calculate total and average purchase amounts
df['NetPurchase'] = df['PurchaseAmount'] - df['Discount']
agg_purchases = df.groupby('Store').agg(
    TotalPurchase=('NetPurchase', 'sum'),
    AvgPurchase=('NetPurchase', 'mean')
)

print(filtered_df)
print(agg_purchases)

Ejercicio 2: Aplicación de una Transformación Logarítmica con NumPy

Tienes un conjunto de datos de ventas de productos con los siguientes valores: [100, 200, 50, 400, 300].

  1. Usa NumPy para calcular la transformación logarítmica de los valores de ventas.
  2. Imprime los valores transformados.
import numpy as np

# Sales data
sales = [100, 200, 50, 400, 300]

# Solution
# Step 1: Apply logarithmic transformation
log_sales = np.log(sales)

print(log_sales)

Ejercicio 3: Estandarización de Datos de Ventas con NumPy

Dado el mismo conjunto de datos de ventas del Ejercicio 2, estandariza los valores calculando el puntaje Z para cada monto de venta.

  1. Calcula la media y la desviación estándar de los datos de ventas.
  2. Usa NumPy para calcular el puntaje Z para cada venta.
# Sales data
sales = [100, 200, 50, 400, 300]

# Solution
# Step 1: Calculate mean and standard deviation
mean_sales = np.mean(sales)
std_sales = np.std(sales)

# Step 2: Calculate Z-scores
z_scores = (sales - mean_sales) / std_sales

print(z_scores)

Ejercicio 4: Construcción de un Modelo de Clasificación con Scikit-learn

Tienes un conjunto de datos de transacciones, donde cada transacción tiene un monto de venta y un descuento. Tu objetivo es construir un modelo de clasificación simple para predecir si una transacción tiene un valor de venta alto (superior a $250) o no.

  1. Crea una variable objetivo (HighSales) donde una venta se clasifique como 1 si el monto de la venta es superior a 250, y 0 en caso contrario.
  2. Usa Scikit-learn para construir un modelo de bosque aleatorio que prediga HighSales en función de SalesAmount y Discount.
  3. Divide el conjunto de datos en conjuntos de entrenamiento y prueba.
  4. Entrena el modelo y muestra las predicciones para el conjunto de prueba.
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
import pandas as pd
import numpy as np

# Sample data
data = {'TransactionID': [101, 102, 103, 104, 105],
        'SalesAmount': [250, np.nan, 340, 400, 200],
        'Discount': [10, 15, 20, np.nan, 5],
        'Store': ['A', 'B', 'A', 'C', 'B']}

df = pd.DataFrame(data)

# Solution
# Step 1: Handle missing values
df['SalesAmount'].fillna(df['SalesAmount'].mean(), inplace=True)
df['Discount'].fillna(df['Discount'].mean(), inplace=True)

# Step 2: Create target variable 'HighSales'
df['HighSales'] = (df['SalesAmount'] > 250).astype(int)

# Step 3: Define features and target
X = df[['SalesAmount', 'Discount']]
y = df['HighSales']

# Step 4: Split data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Step 5: Train a Random Forest model
clf = RandomForestClassifier(random_state=42)
clf.fit(X_train, y_train)

# Step 6: Predict on test set
y_pred = clf.predict(X_test)

print("Predictions:", y_pred)

Ejercicio 5: Combinación de Pandas, NumPy y Scikit-learn en un Flujo de Trabajo

Estás trabajando con un conjunto de datos de transacciones de clientes. Tu tarea es:

  1. Manejar los valores faltantes en las columnas SalesAmount y Discount.
  2. Aplicar una transformación logarítmica a SalesAmount usando NumPy.
  3. Construir un modelo de clasificación con Scikit-learn para predecir si una transacción es de alto valor (HighSales).
  4. Dividir el conjunto de datos en conjuntos de entrenamiento y prueba.
  5. Entrenar el modelo y hacer predicciones en el conjunto de prueba.
# Sample data
data = {'TransactionID': [101, 102, 103, 104, 105],
        'SalesAmount': [250, np.nan, 340, 400, 200],
        'Discount': [10, 15, 20, np.nan, 5],
        'Store': ['A', 'B', 'A', 'C', 'B']}

df = pd.DataFrame(data)

# Solution
# Step 1: Handle missing values using Pandas
df['SalesAmount'].fillna(df['SalesAmount'].mean(), inplace=True)
df['Discount'].fillna(df['Discount'].mean(), inplace=True)

# Step 2: Apply logarithmic transformation to SalesAmount
df['LogSales'] = np.log(df['SalesAmount'])

# Step 3: Create target variable 'HighSales'
df['HighSales'] = (df['SalesAmount'] > 250).astype(int)

# Step 4: Define features and target
X = df[['SalesAmount', 'Discount', 'LogSales']]
y = df['HighSales']

# Step 5: Split data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Step 6: Train a Random Forest model
clf = RandomForestClassifier(random_state=42)
clf.fit(X_train, y_train)

# Step 7: Predict on test set
y_pred = clf.predict(X_test)

print("Predictions:", y_pred)

Estas prácticas abarcan los conceptos esenciales discutidos en el Capítulo 1, brindándote la oportunidad de practicar filtrado de datos, transformación de características y construcción de modelos de aprendizaje automático. Las soluciones proporcionadas ayudan a reforzar tu comprensión y aseguran que estás en el camino correcto. Sigue practicando y no dudes en explorar diferentes conjuntos de datos y variaciones de estas tareas.