Capítulo 3: El papel de la ingeniería de características en el aprendizaje automático
3.3 Ejercicios Prácticos para el Capítulo 3
Ahora que has completado el Capítulo 3, es momento de practicar las técnicas de ingeniería de características que has aprendido. Los siguientes ejercicios están diseñados para ayudarte a aplicar estas técnicas, con soluciones provistas para cada uno. Estos ejercicios cubren conceptos clave como la creación de características de interacción, el manejo de datos basados en el tiempo, la agrupación de características numéricas y la codificación por objetivo.
Ejercicio 1: Creación de una Característica de Interacción
Estás trabajando con un conjunto de datos de ventas de autos. El conjunto de datos contiene columnas para EngineSize (en litros) y HorsePower. Tu tarea es:
Crear una nueva característica llamada PowerToEngineRatio que represente la relación de caballos de fuerza respecto al tamaño del motor.
Solución:
import pandas as pd
# Sample data: Car sales
data = {'CarID': [1, 2, 3, 4, 5],
'EngineSize': [2.0, 3.0, 4.0, 2.5, 3.5],
'HorsePower': [150, 200, 250, 180, 220]}
df = pd.DataFrame(data)
# Create an interaction feature: PowerToEngineRatio
df['PowerToEngineRatio'] = df['HorsePower'] / df['EngineSize']
# View the result
print(df[['EngineSize', 'HorsePower', 'PowerToEngineRatio']])
Ejercicio 2: Manejo de Características Basadas en el Tiempo
Se te proporciona un conjunto de datos que contiene información de transacciones de ventas. El conjunto de datos incluye una columna llamada TransactionDate. Tu tarea es:
- Convertir la columna TransactionDate a formato de fecha y hora.
- Extraer el año, el mes y el día de la semana de la columna TransactionDate.
Solución:
# Sample data: Sales transactions
data = {'TransactionID': [101, 102, 103, 104, 105],
'TransactionDate': ['2022-05-15', '2023-03-10', '2023-07-22', '2022-12-01', '2023-01-14']}
df = pd.DataFrame(data)
# Convert the TransactionDate column to datetime format
df['TransactionDate'] = pd.to_datetime(df['TransactionDate'])
# Extract year, month, and day of the week
df['Year'] = df['TransactionDate'].dt.year
df['Month'] = df['TransactionDate'].dt.month
df['DayOfWeek'] = df['TransactionDate'].dt.dayofweek
# View the result
print(df[['TransactionDate', 'Year', 'Month', 'DayOfWeek']])
Ejercicio 3: Agrupación de Características Numéricas
Estás trabajando con un conjunto de datos de compras de clientes, que incluye una columna llamada PurchaseAmount. Tu tarea es:
Agrupar PurchaseAmount en tres categorías: Bajo, Medio y Alto. Usa los siguientes rangos para las categorías:
- Bajo: Menos de $100
- Medio: Entre $100 y $500
- Alto: Más de $500
Solución:
# Sample data: Customer purchases
data = {'CustomerID': [1, 2, 3, 4, 5],
'PurchaseAmount': [50, 150, 700, 300, 600]}
df = pd.DataFrame(data)
# Define the bins and labels
bins = [0, 100, 500, float('inf')]
labels = ['Low', 'Medium', 'High']
# Bin the PurchaseAmount into categories
df['PurchaseCategory'] = pd.cut(df['PurchaseAmount'], bins=bins, labels=labels)
# View the result
print(df[['PurchaseAmount', 'PurchaseCategory']])
Ejercicio 4: Codificación de Objetivo para Variables Categóricas
Estás trabajando con un conjunto de datos de precios de casas. El conjunto de datos incluye una columna Neighborhood y una columna SalePrice. Tu tarea es:
Realizar codificación de objetivo en la columna Neighborhood reemplazando cada vecindario con el SalePrice promedio para ese vecindario.
Solución:
# Sample data: House prices
data = {'HouseID': [1, 2, 3, 4, 5],
'Neighborhood': ['A', 'B', 'A', 'C', 'B'],
'SalePrice': [300000, 450000, 350000, 500000, 470000]}
df = pd.DataFrame(data)
# Calculate the average SalePrice for each neighborhood
neighborhood_avg_price = df.groupby('Neighborhood')['SalePrice'].mean()
# Perform target encoding by mapping the average prices back to the Neighborhood column
df['NeighborhoodEncoded'] = df['Neighborhood'].map(neighborhood_avg_price)
# View the result
print(df[['Neighborhood', 'SalePrice', 'NeighborhoodEncoded']])
Ejercicio 5: Calcular Diferencias de Tiempo
Tienes un conjunto de datos de propiedades en venta, con las columnas ListingDate y SaleDate. Tu tarea es:
Calcular el número de días que una propiedad ha estado en el mercado (es decir, la diferencia entre SaleDate y ListingDate).
Solución:
# Sample data: Property listings
data = {'PropertyID': [1, 2, 3, 4, 5],
'ListingDate': ['2023-01-01', '2023-02-15', '2023-03-01', '2023-04-01', '2023-05-01'],
'SaleDate': ['2023-03-15', '2023-04-01', '2023-03-20', '2023-05-15', '2023-06-01']}
df = pd.DataFrame(data)
# Convert ListingDate and SaleDate to datetime format
df['ListingDate'] = pd.to_datetime(df['ListingDate'])
df['SaleDate'] = pd.to_datetime(df['SaleDate'])
# Calculate the number of days on market
df['DaysOnMarket'] = (df['SaleDate'] - df['ListingDate']).dt.days
# View the result
print(df[['ListingDate', 'SaleDate', 'DaysOnMarket']])
Estos ejercicios prácticos ayudan a reforzar las técnicas de ingeniería de características cubiertas en el Capítulo 3. Al crear características de interacción, manejar características basadas en el tiempo, agrupar variables numéricas y aplicar codificación basada en el objetivo, has ganado experiencia práctica en transformar datos en bruto en características significativas que mejoran el rendimiento del modelo. Sigue practicando estas técnicas para mejorar continuamente tus flujos de trabajo en Machine Learning!
3.3 Ejercicios Prácticos para el Capítulo 3
Ahora que has completado el Capítulo 3, es momento de practicar las técnicas de ingeniería de características que has aprendido. Los siguientes ejercicios están diseñados para ayudarte a aplicar estas técnicas, con soluciones provistas para cada uno. Estos ejercicios cubren conceptos clave como la creación de características de interacción, el manejo de datos basados en el tiempo, la agrupación de características numéricas y la codificación por objetivo.
Ejercicio 1: Creación de una Característica de Interacción
Estás trabajando con un conjunto de datos de ventas de autos. El conjunto de datos contiene columnas para EngineSize (en litros) y HorsePower. Tu tarea es:
Crear una nueva característica llamada PowerToEngineRatio que represente la relación de caballos de fuerza respecto al tamaño del motor.
Solución:
import pandas as pd
# Sample data: Car sales
data = {'CarID': [1, 2, 3, 4, 5],
'EngineSize': [2.0, 3.0, 4.0, 2.5, 3.5],
'HorsePower': [150, 200, 250, 180, 220]}
df = pd.DataFrame(data)
# Create an interaction feature: PowerToEngineRatio
df['PowerToEngineRatio'] = df['HorsePower'] / df['EngineSize']
# View the result
print(df[['EngineSize', 'HorsePower', 'PowerToEngineRatio']])
Ejercicio 2: Manejo de Características Basadas en el Tiempo
Se te proporciona un conjunto de datos que contiene información de transacciones de ventas. El conjunto de datos incluye una columna llamada TransactionDate. Tu tarea es:
- Convertir la columna TransactionDate a formato de fecha y hora.
- Extraer el año, el mes y el día de la semana de la columna TransactionDate.
Solución:
# Sample data: Sales transactions
data = {'TransactionID': [101, 102, 103, 104, 105],
'TransactionDate': ['2022-05-15', '2023-03-10', '2023-07-22', '2022-12-01', '2023-01-14']}
df = pd.DataFrame(data)
# Convert the TransactionDate column to datetime format
df['TransactionDate'] = pd.to_datetime(df['TransactionDate'])
# Extract year, month, and day of the week
df['Year'] = df['TransactionDate'].dt.year
df['Month'] = df['TransactionDate'].dt.month
df['DayOfWeek'] = df['TransactionDate'].dt.dayofweek
# View the result
print(df[['TransactionDate', 'Year', 'Month', 'DayOfWeek']])
Ejercicio 3: Agrupación de Características Numéricas
Estás trabajando con un conjunto de datos de compras de clientes, que incluye una columna llamada PurchaseAmount. Tu tarea es:
Agrupar PurchaseAmount en tres categorías: Bajo, Medio y Alto. Usa los siguientes rangos para las categorías:
- Bajo: Menos de $100
- Medio: Entre $100 y $500
- Alto: Más de $500
Solución:
# Sample data: Customer purchases
data = {'CustomerID': [1, 2, 3, 4, 5],
'PurchaseAmount': [50, 150, 700, 300, 600]}
df = pd.DataFrame(data)
# Define the bins and labels
bins = [0, 100, 500, float('inf')]
labels = ['Low', 'Medium', 'High']
# Bin the PurchaseAmount into categories
df['PurchaseCategory'] = pd.cut(df['PurchaseAmount'], bins=bins, labels=labels)
# View the result
print(df[['PurchaseAmount', 'PurchaseCategory']])
Ejercicio 4: Codificación de Objetivo para Variables Categóricas
Estás trabajando con un conjunto de datos de precios de casas. El conjunto de datos incluye una columna Neighborhood y una columna SalePrice. Tu tarea es:
Realizar codificación de objetivo en la columna Neighborhood reemplazando cada vecindario con el SalePrice promedio para ese vecindario.
Solución:
# Sample data: House prices
data = {'HouseID': [1, 2, 3, 4, 5],
'Neighborhood': ['A', 'B', 'A', 'C', 'B'],
'SalePrice': [300000, 450000, 350000, 500000, 470000]}
df = pd.DataFrame(data)
# Calculate the average SalePrice for each neighborhood
neighborhood_avg_price = df.groupby('Neighborhood')['SalePrice'].mean()
# Perform target encoding by mapping the average prices back to the Neighborhood column
df['NeighborhoodEncoded'] = df['Neighborhood'].map(neighborhood_avg_price)
# View the result
print(df[['Neighborhood', 'SalePrice', 'NeighborhoodEncoded']])
Ejercicio 5: Calcular Diferencias de Tiempo
Tienes un conjunto de datos de propiedades en venta, con las columnas ListingDate y SaleDate. Tu tarea es:
Calcular el número de días que una propiedad ha estado en el mercado (es decir, la diferencia entre SaleDate y ListingDate).
Solución:
# Sample data: Property listings
data = {'PropertyID': [1, 2, 3, 4, 5],
'ListingDate': ['2023-01-01', '2023-02-15', '2023-03-01', '2023-04-01', '2023-05-01'],
'SaleDate': ['2023-03-15', '2023-04-01', '2023-03-20', '2023-05-15', '2023-06-01']}
df = pd.DataFrame(data)
# Convert ListingDate and SaleDate to datetime format
df['ListingDate'] = pd.to_datetime(df['ListingDate'])
df['SaleDate'] = pd.to_datetime(df['SaleDate'])
# Calculate the number of days on market
df['DaysOnMarket'] = (df['SaleDate'] - df['ListingDate']).dt.days
# View the result
print(df[['ListingDate', 'SaleDate', 'DaysOnMarket']])
Estos ejercicios prácticos ayudan a reforzar las técnicas de ingeniería de características cubiertas en el Capítulo 3. Al crear características de interacción, manejar características basadas en el tiempo, agrupar variables numéricas y aplicar codificación basada en el objetivo, has ganado experiencia práctica en transformar datos en bruto en características significativas que mejoran el rendimiento del modelo. Sigue practicando estas técnicas para mejorar continuamente tus flujos de trabajo en Machine Learning!
3.3 Ejercicios Prácticos para el Capítulo 3
Ahora que has completado el Capítulo 3, es momento de practicar las técnicas de ingeniería de características que has aprendido. Los siguientes ejercicios están diseñados para ayudarte a aplicar estas técnicas, con soluciones provistas para cada uno. Estos ejercicios cubren conceptos clave como la creación de características de interacción, el manejo de datos basados en el tiempo, la agrupación de características numéricas y la codificación por objetivo.
Ejercicio 1: Creación de una Característica de Interacción
Estás trabajando con un conjunto de datos de ventas de autos. El conjunto de datos contiene columnas para EngineSize (en litros) y HorsePower. Tu tarea es:
Crear una nueva característica llamada PowerToEngineRatio que represente la relación de caballos de fuerza respecto al tamaño del motor.
Solución:
import pandas as pd
# Sample data: Car sales
data = {'CarID': [1, 2, 3, 4, 5],
'EngineSize': [2.0, 3.0, 4.0, 2.5, 3.5],
'HorsePower': [150, 200, 250, 180, 220]}
df = pd.DataFrame(data)
# Create an interaction feature: PowerToEngineRatio
df['PowerToEngineRatio'] = df['HorsePower'] / df['EngineSize']
# View the result
print(df[['EngineSize', 'HorsePower', 'PowerToEngineRatio']])
Ejercicio 2: Manejo de Características Basadas en el Tiempo
Se te proporciona un conjunto de datos que contiene información de transacciones de ventas. El conjunto de datos incluye una columna llamada TransactionDate. Tu tarea es:
- Convertir la columna TransactionDate a formato de fecha y hora.
- Extraer el año, el mes y el día de la semana de la columna TransactionDate.
Solución:
# Sample data: Sales transactions
data = {'TransactionID': [101, 102, 103, 104, 105],
'TransactionDate': ['2022-05-15', '2023-03-10', '2023-07-22', '2022-12-01', '2023-01-14']}
df = pd.DataFrame(data)
# Convert the TransactionDate column to datetime format
df['TransactionDate'] = pd.to_datetime(df['TransactionDate'])
# Extract year, month, and day of the week
df['Year'] = df['TransactionDate'].dt.year
df['Month'] = df['TransactionDate'].dt.month
df['DayOfWeek'] = df['TransactionDate'].dt.dayofweek
# View the result
print(df[['TransactionDate', 'Year', 'Month', 'DayOfWeek']])
Ejercicio 3: Agrupación de Características Numéricas
Estás trabajando con un conjunto de datos de compras de clientes, que incluye una columna llamada PurchaseAmount. Tu tarea es:
Agrupar PurchaseAmount en tres categorías: Bajo, Medio y Alto. Usa los siguientes rangos para las categorías:
- Bajo: Menos de $100
- Medio: Entre $100 y $500
- Alto: Más de $500
Solución:
# Sample data: Customer purchases
data = {'CustomerID': [1, 2, 3, 4, 5],
'PurchaseAmount': [50, 150, 700, 300, 600]}
df = pd.DataFrame(data)
# Define the bins and labels
bins = [0, 100, 500, float('inf')]
labels = ['Low', 'Medium', 'High']
# Bin the PurchaseAmount into categories
df['PurchaseCategory'] = pd.cut(df['PurchaseAmount'], bins=bins, labels=labels)
# View the result
print(df[['PurchaseAmount', 'PurchaseCategory']])
Ejercicio 4: Codificación de Objetivo para Variables Categóricas
Estás trabajando con un conjunto de datos de precios de casas. El conjunto de datos incluye una columna Neighborhood y una columna SalePrice. Tu tarea es:
Realizar codificación de objetivo en la columna Neighborhood reemplazando cada vecindario con el SalePrice promedio para ese vecindario.
Solución:
# Sample data: House prices
data = {'HouseID': [1, 2, 3, 4, 5],
'Neighborhood': ['A', 'B', 'A', 'C', 'B'],
'SalePrice': [300000, 450000, 350000, 500000, 470000]}
df = pd.DataFrame(data)
# Calculate the average SalePrice for each neighborhood
neighborhood_avg_price = df.groupby('Neighborhood')['SalePrice'].mean()
# Perform target encoding by mapping the average prices back to the Neighborhood column
df['NeighborhoodEncoded'] = df['Neighborhood'].map(neighborhood_avg_price)
# View the result
print(df[['Neighborhood', 'SalePrice', 'NeighborhoodEncoded']])
Ejercicio 5: Calcular Diferencias de Tiempo
Tienes un conjunto de datos de propiedades en venta, con las columnas ListingDate y SaleDate. Tu tarea es:
Calcular el número de días que una propiedad ha estado en el mercado (es decir, la diferencia entre SaleDate y ListingDate).
Solución:
# Sample data: Property listings
data = {'PropertyID': [1, 2, 3, 4, 5],
'ListingDate': ['2023-01-01', '2023-02-15', '2023-03-01', '2023-04-01', '2023-05-01'],
'SaleDate': ['2023-03-15', '2023-04-01', '2023-03-20', '2023-05-15', '2023-06-01']}
df = pd.DataFrame(data)
# Convert ListingDate and SaleDate to datetime format
df['ListingDate'] = pd.to_datetime(df['ListingDate'])
df['SaleDate'] = pd.to_datetime(df['SaleDate'])
# Calculate the number of days on market
df['DaysOnMarket'] = (df['SaleDate'] - df['ListingDate']).dt.days
# View the result
print(df[['ListingDate', 'SaleDate', 'DaysOnMarket']])
Estos ejercicios prácticos ayudan a reforzar las técnicas de ingeniería de características cubiertas en el Capítulo 3. Al crear características de interacción, manejar características basadas en el tiempo, agrupar variables numéricas y aplicar codificación basada en el objetivo, has ganado experiencia práctica en transformar datos en bruto en características significativas que mejoran el rendimiento del modelo. Sigue practicando estas técnicas para mejorar continuamente tus flujos de trabajo en Machine Learning!
3.3 Ejercicios Prácticos para el Capítulo 3
Ahora que has completado el Capítulo 3, es momento de practicar las técnicas de ingeniería de características que has aprendido. Los siguientes ejercicios están diseñados para ayudarte a aplicar estas técnicas, con soluciones provistas para cada uno. Estos ejercicios cubren conceptos clave como la creación de características de interacción, el manejo de datos basados en el tiempo, la agrupación de características numéricas y la codificación por objetivo.
Ejercicio 1: Creación de una Característica de Interacción
Estás trabajando con un conjunto de datos de ventas de autos. El conjunto de datos contiene columnas para EngineSize (en litros) y HorsePower. Tu tarea es:
Crear una nueva característica llamada PowerToEngineRatio que represente la relación de caballos de fuerza respecto al tamaño del motor.
Solución:
import pandas as pd
# Sample data: Car sales
data = {'CarID': [1, 2, 3, 4, 5],
'EngineSize': [2.0, 3.0, 4.0, 2.5, 3.5],
'HorsePower': [150, 200, 250, 180, 220]}
df = pd.DataFrame(data)
# Create an interaction feature: PowerToEngineRatio
df['PowerToEngineRatio'] = df['HorsePower'] / df['EngineSize']
# View the result
print(df[['EngineSize', 'HorsePower', 'PowerToEngineRatio']])
Ejercicio 2: Manejo de Características Basadas en el Tiempo
Se te proporciona un conjunto de datos que contiene información de transacciones de ventas. El conjunto de datos incluye una columna llamada TransactionDate. Tu tarea es:
- Convertir la columna TransactionDate a formato de fecha y hora.
- Extraer el año, el mes y el día de la semana de la columna TransactionDate.
Solución:
# Sample data: Sales transactions
data = {'TransactionID': [101, 102, 103, 104, 105],
'TransactionDate': ['2022-05-15', '2023-03-10', '2023-07-22', '2022-12-01', '2023-01-14']}
df = pd.DataFrame(data)
# Convert the TransactionDate column to datetime format
df['TransactionDate'] = pd.to_datetime(df['TransactionDate'])
# Extract year, month, and day of the week
df['Year'] = df['TransactionDate'].dt.year
df['Month'] = df['TransactionDate'].dt.month
df['DayOfWeek'] = df['TransactionDate'].dt.dayofweek
# View the result
print(df[['TransactionDate', 'Year', 'Month', 'DayOfWeek']])
Ejercicio 3: Agrupación de Características Numéricas
Estás trabajando con un conjunto de datos de compras de clientes, que incluye una columna llamada PurchaseAmount. Tu tarea es:
Agrupar PurchaseAmount en tres categorías: Bajo, Medio y Alto. Usa los siguientes rangos para las categorías:
- Bajo: Menos de $100
- Medio: Entre $100 y $500
- Alto: Más de $500
Solución:
# Sample data: Customer purchases
data = {'CustomerID': [1, 2, 3, 4, 5],
'PurchaseAmount': [50, 150, 700, 300, 600]}
df = pd.DataFrame(data)
# Define the bins and labels
bins = [0, 100, 500, float('inf')]
labels = ['Low', 'Medium', 'High']
# Bin the PurchaseAmount into categories
df['PurchaseCategory'] = pd.cut(df['PurchaseAmount'], bins=bins, labels=labels)
# View the result
print(df[['PurchaseAmount', 'PurchaseCategory']])
Ejercicio 4: Codificación de Objetivo para Variables Categóricas
Estás trabajando con un conjunto de datos de precios de casas. El conjunto de datos incluye una columna Neighborhood y una columna SalePrice. Tu tarea es:
Realizar codificación de objetivo en la columna Neighborhood reemplazando cada vecindario con el SalePrice promedio para ese vecindario.
Solución:
# Sample data: House prices
data = {'HouseID': [1, 2, 3, 4, 5],
'Neighborhood': ['A', 'B', 'A', 'C', 'B'],
'SalePrice': [300000, 450000, 350000, 500000, 470000]}
df = pd.DataFrame(data)
# Calculate the average SalePrice for each neighborhood
neighborhood_avg_price = df.groupby('Neighborhood')['SalePrice'].mean()
# Perform target encoding by mapping the average prices back to the Neighborhood column
df['NeighborhoodEncoded'] = df['Neighborhood'].map(neighborhood_avg_price)
# View the result
print(df[['Neighborhood', 'SalePrice', 'NeighborhoodEncoded']])
Ejercicio 5: Calcular Diferencias de Tiempo
Tienes un conjunto de datos de propiedades en venta, con las columnas ListingDate y SaleDate. Tu tarea es:
Calcular el número de días que una propiedad ha estado en el mercado (es decir, la diferencia entre SaleDate y ListingDate).
Solución:
# Sample data: Property listings
data = {'PropertyID': [1, 2, 3, 4, 5],
'ListingDate': ['2023-01-01', '2023-02-15', '2023-03-01', '2023-04-01', '2023-05-01'],
'SaleDate': ['2023-03-15', '2023-04-01', '2023-03-20', '2023-05-15', '2023-06-01']}
df = pd.DataFrame(data)
# Convert ListingDate and SaleDate to datetime format
df['ListingDate'] = pd.to_datetime(df['ListingDate'])
df['SaleDate'] = pd.to_datetime(df['SaleDate'])
# Calculate the number of days on market
df['DaysOnMarket'] = (df['SaleDate'] - df['ListingDate']).dt.days
# View the result
print(df[['ListingDate', 'SaleDate', 'DaysOnMarket']])
Estos ejercicios prácticos ayudan a reforzar las técnicas de ingeniería de características cubiertas en el Capítulo 3. Al crear características de interacción, manejar características basadas en el tiempo, agrupar variables numéricas y aplicar codificación basada en el objetivo, has ganado experiencia práctica en transformar datos en bruto en características significativas que mejoran el rendimiento del modelo. Sigue practicando estas técnicas para mejorar continuamente tus flujos de trabajo en Machine Learning!