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:
- Filtrar el conjunto de datos para mostrar solo las transacciones donde el monto de la compra supera los $200.
- 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]
.
- Usa NumPy para calcular la transformación logarítmica de los valores de ventas.
- 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.
- Calcula la media y la desviación estándar de los datos de ventas.
- 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.
- 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. - Usa Scikit-learn para construir un modelo de bosque aleatorio que prediga
HighSales
en función deSalesAmount
yDiscount
. - Divide el conjunto de datos en conjuntos de entrenamiento y prueba.
- 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:
- Manejar los valores faltantes en las columnas
SalesAmount
yDiscount
. - Aplicar una transformación logarítmica a
SalesAmount
usando NumPy. - Construir un modelo de clasificación con Scikit-learn para predecir si una transacción es de alto valor (
HighSales
). - Dividir el conjunto de datos en conjuntos de entrenamiento y prueba.
- 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:
- Filtrar el conjunto de datos para mostrar solo las transacciones donde el monto de la compra supera los $200.
- 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]
.
- Usa NumPy para calcular la transformación logarítmica de los valores de ventas.
- 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.
- Calcula la media y la desviación estándar de los datos de ventas.
- 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.
- 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. - Usa Scikit-learn para construir un modelo de bosque aleatorio que prediga
HighSales
en función deSalesAmount
yDiscount
. - Divide el conjunto de datos en conjuntos de entrenamiento y prueba.
- 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:
- Manejar los valores faltantes en las columnas
SalesAmount
yDiscount
. - Aplicar una transformación logarítmica a
SalesAmount
usando NumPy. - Construir un modelo de clasificación con Scikit-learn para predecir si una transacción es de alto valor (
HighSales
). - Dividir el conjunto de datos en conjuntos de entrenamiento y prueba.
- 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:
- Filtrar el conjunto de datos para mostrar solo las transacciones donde el monto de la compra supera los $200.
- 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]
.
- Usa NumPy para calcular la transformación logarítmica de los valores de ventas.
- 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.
- Calcula la media y la desviación estándar de los datos de ventas.
- 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.
- 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. - Usa Scikit-learn para construir un modelo de bosque aleatorio que prediga
HighSales
en función deSalesAmount
yDiscount
. - Divide el conjunto de datos en conjuntos de entrenamiento y prueba.
- 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:
- Manejar los valores faltantes en las columnas
SalesAmount
yDiscount
. - Aplicar una transformación logarítmica a
SalesAmount
usando NumPy. - Construir un modelo de clasificación con Scikit-learn para predecir si una transacción es de alto valor (
HighSales
). - Dividir el conjunto de datos en conjuntos de entrenamiento y prueba.
- 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:
- Filtrar el conjunto de datos para mostrar solo las transacciones donde el monto de la compra supera los $200.
- 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]
.
- Usa NumPy para calcular la transformación logarítmica de los valores de ventas.
- 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.
- Calcula la media y la desviación estándar de los datos de ventas.
- 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.
- 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. - Usa Scikit-learn para construir un modelo de bosque aleatorio que prediga
HighSales
en función deSalesAmount
yDiscount
. - Divide el conjunto de datos en conjuntos de entrenamiento y prueba.
- 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:
- Manejar los valores faltantes en las columnas
SalesAmount
yDiscount
. - Aplicar una transformación logarítmica a
SalesAmount
usando NumPy. - Construir un modelo de clasificación con Scikit-learn para predecir si una transacción es de alto valor (
HighSales
). - Dividir el conjunto de datos en conjuntos de entrenamiento y prueba.
- 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.