Menu iconMenu icon
Fundamentos de Ingeniería de Datos

Capítulo 5: Transformando y Escalando Características

5.3 Ejercicios Prácticos para el Capítulo 5

Ahora que has completado el Capítulo 5, es momento de aplicar lo aprendido a través de ejercicios prácticos. Estos ejercicios se enfocan en la escalación y las transformaciones no lineales, cubriendo transformaciones logarítmicas, de raíz cuadrada, de raíz cúbica y de potencia. Cada ejercicio incluye soluciones para ayudarte a solidificar tu comprensión de estos conceptos clave.

Ejercicio 1: Escalado Min-Max

Estás trabajando con un conjunto de datos que contiene las siguientes columnas: Edad e Ingresos. Tu tarea es:

Aplicar escalado Min-Max a las columnas de Edad e Ingresos, transformando los valores a un rango entre 0 y 1.

Solución:

import pandas as pd
from sklearn.preprocessing import MinMaxScaler

# Sample data
data = {'Age': [25, 40, 35, 50, 60],
        'Income': [40000, 50000, 60000, 80000, 100000]}

df = pd.DataFrame(data)

# Initialize the Min-Max Scaler
scaler = MinMaxScaler()

# Apply the scaler to the dataframe
df_scaled = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)

# View the scaled dataframe
print(df_scaled)

Ejercicio 2: Estandarización (Normalización de Z-Score)

Estás trabajando con el mismo conjunto de datos que en el Ejercicio 1. En esta ocasión, tu tarea es:

Aplicar Estandarización (normalización de Z-score) a las columnas de Edad e Ingresos.

Solución:

from sklearn.preprocessing import StandardScaler

# Sample data
data = {'Age': [25, 40, 35, 50, 60],
        'Income': [40000, 50000, 60000, 80000, 100000]}

df = pd.DataFrame(data)

# Initialize the Standard Scaler
scaler = StandardScaler()

# Apply the scaler to the dataframe
df_standardized = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)

# View the standardized dataframe
print(df_standardized)

Ejercicio 3: Transformación Logarítmica

Estás trabajando con un conjunto de datos que contiene la columna PreciosCasas, cuyos valores presentan una fuerte asimetría hacia la derecha. Tu tarea es:

Aplicar una transformación logarítmica a la columna PreciosCasas.

Solución:

import numpy as np
import pandas as pd

# Sample data with a right-skewed distribution
data = {'HousePrices': [50000, 120000, 250000, 500000, 1200000, 2500000]}

df = pd.DataFrame(data)

# Apply a logarithmic transformation
df['LogHousePrices'] = np.log(df['HousePrices'])

# View the transformed data
print(df)

Ejercicio 4: Transformación de Raíz Cuadrada

Estás trabajando con los mismos datos de PreciosCasas. Tu tarea es:

Aplicar una transformación de raíz cuadrada a la columna PreciosCasas.

Solución:

# Apply a square root transformation
df['SqrtHousePrices'] = np.sqrt(df['HousePrices'])

# View the transformed data
print(df)

Ejercicio 5: Transformación de Raíz Cúbica

Te han dado un conjunto de datos con la columna ValoresPropiedad, que contiene tanto valores positivos como negativos. Tu tarea es:

Aplicar una transformación de raíz cúbica a la columna ValoresPropiedad.

Solución:

# Sample data with both positive and negative values
data = {'PropertyValues': [-8000, -5000, 0, 5000, 10000, 20000]}

df = pd.DataFrame(data)

# Apply a cube root transformation
df['CubeRootPropertyValues'] = np.cbrt(df['PropertyValues'])

# View the transformed data
print(df)

Ejercicio 6: Transformación Box-Cox

Estás trabajando con un conjunto de datos que contiene valores de Ingresos, los cuales son positivos pero están moderadamente sesgados. Tu tarea es:

Aplicar la transformación Box-Cox a la columna Ingresos usando el PowerTransformer de Scikit-learn.

Solución:

from sklearn.preprocessing import PowerTransformer
import pandas as pd

# Sample data (positive values only for Box-Cox)
data = {'Income': [30000, 50000, 100000, 200000, 500000]}

df = pd.DataFrame(data)

# Apply the Box-Cox transformation
boxcox_transformer = PowerTransformer(method='box-cox')
df['BoxCoxIncome'] = boxcox_transformer.fit_transform(df[['Income']])

# View the transformed data
print(df)

Ejercicio 7: Transformación Yeo-Johnson

Estás trabajando con un conjunto de datos que contiene la columna Ganancia, la cual incluye tanto valores positivos como negativos. Tu tarea es:

Aplicar la transformación Yeo-Johnson a la columna Ganancia usando el PowerTransformer de Scikit-learn.

Solución:

from sklearn.preprocessing import PowerTransformer
import pandas as pd

# Sample data with positive and negative values
data = {'Profit': [-5000, -2000, 0, 3000, 15000]}

df = pd.DataFrame(data)

# Apply the Yeo-Johnson transformation
yeojohnson_transformer = PowerTransformer(method='yeo-johnson')
df['YeoJohnsonProfit'] = yeojohnson_transformer.fit_transform(df[['Profit']])

# View the transformed data
print(df)

Estas prácticas proporcionan experiencia práctica con la escalación, normalización y transformaciones no lineales, incluidas las transformaciones logarítmica, raíz cuadrada, raíz cúbica, Box-Cox y Yeo-Johnson. Al practicar estas técnicas, puedes preparar datos con confianza para modelos de machine learning, asegurándote de que las características estén bien escaladas, equilibradas y optimizadas para el rendimiento. Sigue practicando y explorando estos métodos para manejar una variedad de distribuciones de datos.

5.3 Ejercicios Prácticos para el Capítulo 5

Ahora que has completado el Capítulo 5, es momento de aplicar lo aprendido a través de ejercicios prácticos. Estos ejercicios se enfocan en la escalación y las transformaciones no lineales, cubriendo transformaciones logarítmicas, de raíz cuadrada, de raíz cúbica y de potencia. Cada ejercicio incluye soluciones para ayudarte a solidificar tu comprensión de estos conceptos clave.

Ejercicio 1: Escalado Min-Max

Estás trabajando con un conjunto de datos que contiene las siguientes columnas: Edad e Ingresos. Tu tarea es:

Aplicar escalado Min-Max a las columnas de Edad e Ingresos, transformando los valores a un rango entre 0 y 1.

Solución:

import pandas as pd
from sklearn.preprocessing import MinMaxScaler

# Sample data
data = {'Age': [25, 40, 35, 50, 60],
        'Income': [40000, 50000, 60000, 80000, 100000]}

df = pd.DataFrame(data)

# Initialize the Min-Max Scaler
scaler = MinMaxScaler()

# Apply the scaler to the dataframe
df_scaled = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)

# View the scaled dataframe
print(df_scaled)

Ejercicio 2: Estandarización (Normalización de Z-Score)

Estás trabajando con el mismo conjunto de datos que en el Ejercicio 1. En esta ocasión, tu tarea es:

Aplicar Estandarización (normalización de Z-score) a las columnas de Edad e Ingresos.

Solución:

from sklearn.preprocessing import StandardScaler

# Sample data
data = {'Age': [25, 40, 35, 50, 60],
        'Income': [40000, 50000, 60000, 80000, 100000]}

df = pd.DataFrame(data)

# Initialize the Standard Scaler
scaler = StandardScaler()

# Apply the scaler to the dataframe
df_standardized = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)

# View the standardized dataframe
print(df_standardized)

Ejercicio 3: Transformación Logarítmica

Estás trabajando con un conjunto de datos que contiene la columna PreciosCasas, cuyos valores presentan una fuerte asimetría hacia la derecha. Tu tarea es:

Aplicar una transformación logarítmica a la columna PreciosCasas.

Solución:

import numpy as np
import pandas as pd

# Sample data with a right-skewed distribution
data = {'HousePrices': [50000, 120000, 250000, 500000, 1200000, 2500000]}

df = pd.DataFrame(data)

# Apply a logarithmic transformation
df['LogHousePrices'] = np.log(df['HousePrices'])

# View the transformed data
print(df)

Ejercicio 4: Transformación de Raíz Cuadrada

Estás trabajando con los mismos datos de PreciosCasas. Tu tarea es:

Aplicar una transformación de raíz cuadrada a la columna PreciosCasas.

Solución:

# Apply a square root transformation
df['SqrtHousePrices'] = np.sqrt(df['HousePrices'])

# View the transformed data
print(df)

Ejercicio 5: Transformación de Raíz Cúbica

Te han dado un conjunto de datos con la columna ValoresPropiedad, que contiene tanto valores positivos como negativos. Tu tarea es:

Aplicar una transformación de raíz cúbica a la columna ValoresPropiedad.

Solución:

# Sample data with both positive and negative values
data = {'PropertyValues': [-8000, -5000, 0, 5000, 10000, 20000]}

df = pd.DataFrame(data)

# Apply a cube root transformation
df['CubeRootPropertyValues'] = np.cbrt(df['PropertyValues'])

# View the transformed data
print(df)

Ejercicio 6: Transformación Box-Cox

Estás trabajando con un conjunto de datos que contiene valores de Ingresos, los cuales son positivos pero están moderadamente sesgados. Tu tarea es:

Aplicar la transformación Box-Cox a la columna Ingresos usando el PowerTransformer de Scikit-learn.

Solución:

from sklearn.preprocessing import PowerTransformer
import pandas as pd

# Sample data (positive values only for Box-Cox)
data = {'Income': [30000, 50000, 100000, 200000, 500000]}

df = pd.DataFrame(data)

# Apply the Box-Cox transformation
boxcox_transformer = PowerTransformer(method='box-cox')
df['BoxCoxIncome'] = boxcox_transformer.fit_transform(df[['Income']])

# View the transformed data
print(df)

Ejercicio 7: Transformación Yeo-Johnson

Estás trabajando con un conjunto de datos que contiene la columna Ganancia, la cual incluye tanto valores positivos como negativos. Tu tarea es:

Aplicar la transformación Yeo-Johnson a la columna Ganancia usando el PowerTransformer de Scikit-learn.

Solución:

from sklearn.preprocessing import PowerTransformer
import pandas as pd

# Sample data with positive and negative values
data = {'Profit': [-5000, -2000, 0, 3000, 15000]}

df = pd.DataFrame(data)

# Apply the Yeo-Johnson transformation
yeojohnson_transformer = PowerTransformer(method='yeo-johnson')
df['YeoJohnsonProfit'] = yeojohnson_transformer.fit_transform(df[['Profit']])

# View the transformed data
print(df)

Estas prácticas proporcionan experiencia práctica con la escalación, normalización y transformaciones no lineales, incluidas las transformaciones logarítmica, raíz cuadrada, raíz cúbica, Box-Cox y Yeo-Johnson. Al practicar estas técnicas, puedes preparar datos con confianza para modelos de machine learning, asegurándote de que las características estén bien escaladas, equilibradas y optimizadas para el rendimiento. Sigue practicando y explorando estos métodos para manejar una variedad de distribuciones de datos.

5.3 Ejercicios Prácticos para el Capítulo 5

Ahora que has completado el Capítulo 5, es momento de aplicar lo aprendido a través de ejercicios prácticos. Estos ejercicios se enfocan en la escalación y las transformaciones no lineales, cubriendo transformaciones logarítmicas, de raíz cuadrada, de raíz cúbica y de potencia. Cada ejercicio incluye soluciones para ayudarte a solidificar tu comprensión de estos conceptos clave.

Ejercicio 1: Escalado Min-Max

Estás trabajando con un conjunto de datos que contiene las siguientes columnas: Edad e Ingresos. Tu tarea es:

Aplicar escalado Min-Max a las columnas de Edad e Ingresos, transformando los valores a un rango entre 0 y 1.

Solución:

import pandas as pd
from sklearn.preprocessing import MinMaxScaler

# Sample data
data = {'Age': [25, 40, 35, 50, 60],
        'Income': [40000, 50000, 60000, 80000, 100000]}

df = pd.DataFrame(data)

# Initialize the Min-Max Scaler
scaler = MinMaxScaler()

# Apply the scaler to the dataframe
df_scaled = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)

# View the scaled dataframe
print(df_scaled)

Ejercicio 2: Estandarización (Normalización de Z-Score)

Estás trabajando con el mismo conjunto de datos que en el Ejercicio 1. En esta ocasión, tu tarea es:

Aplicar Estandarización (normalización de Z-score) a las columnas de Edad e Ingresos.

Solución:

from sklearn.preprocessing import StandardScaler

# Sample data
data = {'Age': [25, 40, 35, 50, 60],
        'Income': [40000, 50000, 60000, 80000, 100000]}

df = pd.DataFrame(data)

# Initialize the Standard Scaler
scaler = StandardScaler()

# Apply the scaler to the dataframe
df_standardized = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)

# View the standardized dataframe
print(df_standardized)

Ejercicio 3: Transformación Logarítmica

Estás trabajando con un conjunto de datos que contiene la columna PreciosCasas, cuyos valores presentan una fuerte asimetría hacia la derecha. Tu tarea es:

Aplicar una transformación logarítmica a la columna PreciosCasas.

Solución:

import numpy as np
import pandas as pd

# Sample data with a right-skewed distribution
data = {'HousePrices': [50000, 120000, 250000, 500000, 1200000, 2500000]}

df = pd.DataFrame(data)

# Apply a logarithmic transformation
df['LogHousePrices'] = np.log(df['HousePrices'])

# View the transformed data
print(df)

Ejercicio 4: Transformación de Raíz Cuadrada

Estás trabajando con los mismos datos de PreciosCasas. Tu tarea es:

Aplicar una transformación de raíz cuadrada a la columna PreciosCasas.

Solución:

# Apply a square root transformation
df['SqrtHousePrices'] = np.sqrt(df['HousePrices'])

# View the transformed data
print(df)

Ejercicio 5: Transformación de Raíz Cúbica

Te han dado un conjunto de datos con la columna ValoresPropiedad, que contiene tanto valores positivos como negativos. Tu tarea es:

Aplicar una transformación de raíz cúbica a la columna ValoresPropiedad.

Solución:

# Sample data with both positive and negative values
data = {'PropertyValues': [-8000, -5000, 0, 5000, 10000, 20000]}

df = pd.DataFrame(data)

# Apply a cube root transformation
df['CubeRootPropertyValues'] = np.cbrt(df['PropertyValues'])

# View the transformed data
print(df)

Ejercicio 6: Transformación Box-Cox

Estás trabajando con un conjunto de datos que contiene valores de Ingresos, los cuales son positivos pero están moderadamente sesgados. Tu tarea es:

Aplicar la transformación Box-Cox a la columna Ingresos usando el PowerTransformer de Scikit-learn.

Solución:

from sklearn.preprocessing import PowerTransformer
import pandas as pd

# Sample data (positive values only for Box-Cox)
data = {'Income': [30000, 50000, 100000, 200000, 500000]}

df = pd.DataFrame(data)

# Apply the Box-Cox transformation
boxcox_transformer = PowerTransformer(method='box-cox')
df['BoxCoxIncome'] = boxcox_transformer.fit_transform(df[['Income']])

# View the transformed data
print(df)

Ejercicio 7: Transformación Yeo-Johnson

Estás trabajando con un conjunto de datos que contiene la columna Ganancia, la cual incluye tanto valores positivos como negativos. Tu tarea es:

Aplicar la transformación Yeo-Johnson a la columna Ganancia usando el PowerTransformer de Scikit-learn.

Solución:

from sklearn.preprocessing import PowerTransformer
import pandas as pd

# Sample data with positive and negative values
data = {'Profit': [-5000, -2000, 0, 3000, 15000]}

df = pd.DataFrame(data)

# Apply the Yeo-Johnson transformation
yeojohnson_transformer = PowerTransformer(method='yeo-johnson')
df['YeoJohnsonProfit'] = yeojohnson_transformer.fit_transform(df[['Profit']])

# View the transformed data
print(df)

Estas prácticas proporcionan experiencia práctica con la escalación, normalización y transformaciones no lineales, incluidas las transformaciones logarítmica, raíz cuadrada, raíz cúbica, Box-Cox y Yeo-Johnson. Al practicar estas técnicas, puedes preparar datos con confianza para modelos de machine learning, asegurándote de que las características estén bien escaladas, equilibradas y optimizadas para el rendimiento. Sigue practicando y explorando estos métodos para manejar una variedad de distribuciones de datos.

5.3 Ejercicios Prácticos para el Capítulo 5

Ahora que has completado el Capítulo 5, es momento de aplicar lo aprendido a través de ejercicios prácticos. Estos ejercicios se enfocan en la escalación y las transformaciones no lineales, cubriendo transformaciones logarítmicas, de raíz cuadrada, de raíz cúbica y de potencia. Cada ejercicio incluye soluciones para ayudarte a solidificar tu comprensión de estos conceptos clave.

Ejercicio 1: Escalado Min-Max

Estás trabajando con un conjunto de datos que contiene las siguientes columnas: Edad e Ingresos. Tu tarea es:

Aplicar escalado Min-Max a las columnas de Edad e Ingresos, transformando los valores a un rango entre 0 y 1.

Solución:

import pandas as pd
from sklearn.preprocessing import MinMaxScaler

# Sample data
data = {'Age': [25, 40, 35, 50, 60],
        'Income': [40000, 50000, 60000, 80000, 100000]}

df = pd.DataFrame(data)

# Initialize the Min-Max Scaler
scaler = MinMaxScaler()

# Apply the scaler to the dataframe
df_scaled = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)

# View the scaled dataframe
print(df_scaled)

Ejercicio 2: Estandarización (Normalización de Z-Score)

Estás trabajando con el mismo conjunto de datos que en el Ejercicio 1. En esta ocasión, tu tarea es:

Aplicar Estandarización (normalización de Z-score) a las columnas de Edad e Ingresos.

Solución:

from sklearn.preprocessing import StandardScaler

# Sample data
data = {'Age': [25, 40, 35, 50, 60],
        'Income': [40000, 50000, 60000, 80000, 100000]}

df = pd.DataFrame(data)

# Initialize the Standard Scaler
scaler = StandardScaler()

# Apply the scaler to the dataframe
df_standardized = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)

# View the standardized dataframe
print(df_standardized)

Ejercicio 3: Transformación Logarítmica

Estás trabajando con un conjunto de datos que contiene la columna PreciosCasas, cuyos valores presentan una fuerte asimetría hacia la derecha. Tu tarea es:

Aplicar una transformación logarítmica a la columna PreciosCasas.

Solución:

import numpy as np
import pandas as pd

# Sample data with a right-skewed distribution
data = {'HousePrices': [50000, 120000, 250000, 500000, 1200000, 2500000]}

df = pd.DataFrame(data)

# Apply a logarithmic transformation
df['LogHousePrices'] = np.log(df['HousePrices'])

# View the transformed data
print(df)

Ejercicio 4: Transformación de Raíz Cuadrada

Estás trabajando con los mismos datos de PreciosCasas. Tu tarea es:

Aplicar una transformación de raíz cuadrada a la columna PreciosCasas.

Solución:

# Apply a square root transformation
df['SqrtHousePrices'] = np.sqrt(df['HousePrices'])

# View the transformed data
print(df)

Ejercicio 5: Transformación de Raíz Cúbica

Te han dado un conjunto de datos con la columna ValoresPropiedad, que contiene tanto valores positivos como negativos. Tu tarea es:

Aplicar una transformación de raíz cúbica a la columna ValoresPropiedad.

Solución:

# Sample data with both positive and negative values
data = {'PropertyValues': [-8000, -5000, 0, 5000, 10000, 20000]}

df = pd.DataFrame(data)

# Apply a cube root transformation
df['CubeRootPropertyValues'] = np.cbrt(df['PropertyValues'])

# View the transformed data
print(df)

Ejercicio 6: Transformación Box-Cox

Estás trabajando con un conjunto de datos que contiene valores de Ingresos, los cuales son positivos pero están moderadamente sesgados. Tu tarea es:

Aplicar la transformación Box-Cox a la columna Ingresos usando el PowerTransformer de Scikit-learn.

Solución:

from sklearn.preprocessing import PowerTransformer
import pandas as pd

# Sample data (positive values only for Box-Cox)
data = {'Income': [30000, 50000, 100000, 200000, 500000]}

df = pd.DataFrame(data)

# Apply the Box-Cox transformation
boxcox_transformer = PowerTransformer(method='box-cox')
df['BoxCoxIncome'] = boxcox_transformer.fit_transform(df[['Income']])

# View the transformed data
print(df)

Ejercicio 7: Transformación Yeo-Johnson

Estás trabajando con un conjunto de datos que contiene la columna Ganancia, la cual incluye tanto valores positivos como negativos. Tu tarea es:

Aplicar la transformación Yeo-Johnson a la columna Ganancia usando el PowerTransformer de Scikit-learn.

Solución:

from sklearn.preprocessing import PowerTransformer
import pandas as pd

# Sample data with positive and negative values
data = {'Profit': [-5000, -2000, 0, 3000, 15000]}

df = pd.DataFrame(data)

# Apply the Yeo-Johnson transformation
yeojohnson_transformer = PowerTransformer(method='yeo-johnson')
df['YeoJohnsonProfit'] = yeojohnson_transformer.fit_transform(df[['Profit']])

# View the transformed data
print(df)

Estas prácticas proporcionan experiencia práctica con la escalación, normalización y transformaciones no lineales, incluidas las transformaciones logarítmica, raíz cuadrada, raíz cúbica, Box-Cox y Yeo-Johnson. Al practicar estas técnicas, puedes preparar datos con confianza para modelos de machine learning, asegurándote de que las características estén bien escaladas, equilibradas y optimizadas para el rendimiento. Sigue practicando y explorando estos métodos para manejar una variedad de distribuciones de datos.