La transformación de datos es un paso crucial en el preprocesamiento de datos para Machine Learning. Este proceso implica convertir los datos en un formato adecuado para el análisis y la construcción de modelos. La transformación de datos puede incluir una variedad de técnicas, como la codificación de variables categóricas, la creación de nuevas variables, la transformación de variables existentes y la reducción de dimensionalidad.

Objetivos de la Transformación de Datos

  • Mejorar la calidad de los datos: Asegurarse de que los datos sean precisos y consistentes.
  • Facilitar el análisis: Convertir los datos en un formato que sea más fácil de analizar.
  • Mejorar el rendimiento del modelo: Aumentar la eficacia y eficiencia de los algoritmos de Machine Learning.

Técnicas Comunes de Transformación de Datos

  1. Codificación de Variables Categóricas

Las variables categóricas son aquellas que representan categorías o etiquetas. Los algoritmos de Machine Learning no pueden trabajar directamente con estas variables, por lo que es necesario transformarlas en una forma numérica.

Codificación One-Hot

La codificación One-Hot convierte cada categoría en una columna binaria (0 o 1).

Ejemplo:

import pandas as pd

# Datos de ejemplo
data = {'Color': ['Rojo', 'Verde', 'Azul']}
df = pd.DataFrame(data)

# Codificación One-Hot
df_encoded = pd.get_dummies(df, columns=['Color'])
print(df_encoded)

Salida:

   Color_Azul  Color_Rojo  Color_Verde
0           0           1            0
1           0           0            1
2           1           0            0

  1. Transformación de Variables Numéricas

Las variables numéricas pueden necesitar transformaciones para mejorar la distribución de los datos o para cumplir con los supuestos de los algoritmos de Machine Learning.

Escalado de Datos

El escalado de datos es importante para algoritmos que son sensibles a la magnitud de las variables, como la regresión logística y las máquinas de soporte vectorial (SVM).

Normalización:

from sklearn.preprocessing import MinMaxScaler

# Datos de ejemplo
data = {'Edad': [25, 35, 45, 55]}
df = pd.DataFrame(data)

# Normalización
scaler = MinMaxScaler()
df['Edad_normalizada'] = scaler.fit_transform(df[['Edad']])
print(df)

Salida:

   Edad  Edad_normalizada
0    25               0.0
1    35               0.2
2    45               0.4
3    55               0.6

Estandarización:

from sklearn.preprocessing import StandardScaler

# Estandarización
scaler = StandardScaler()
df['Edad_estandarizada'] = scaler.fit_transform(df[['Edad']])
print(df)

Salida:

   Edad  Edad_estandarizada
0    25           -1.341641
1    35           -0.447214
2    45            0.447214
3    55            1.341641

  1. Transformaciones Logarítmicas y de Potencia

Estas transformaciones se utilizan para manejar la asimetría en la distribución de los datos.

Transformación Logarítmica:

import numpy as np

# Datos de ejemplo
data = {'Ingresos': [1000, 10000, 100000, 1000000]}
df = pd.DataFrame(data)

# Transformación Logarítmica
df['Ingresos_log'] = np.log(df['Ingresos'])
print(df)

Salida:

   Ingresos  Ingresos_log
0      1000      6.907755
1     10000      9.210340
2    100000     11.512925
3   1000000     13.815511

  1. Creación de Nuevas Variables

A veces, es útil crear nuevas variables a partir de las existentes para capturar mejor la información en los datos.

Ejemplo:

# Datos de ejemplo
data = {'Altura': [1.5, 1.8, 1.6, 1.7], 'Peso': [50, 80, 60, 70]}
df = pd.DataFrame(data)

# Creación de una nueva variable: Índice de Masa Corporal (IMC)
df['IMC'] = df['Peso'] / (df['Altura'] ** 2)
print(df)

Salida:

   Altura  Peso        IMC
0     1.5    50  22.222222
1     1.8    80  24.691358
2     1.6    60  23.437500
3     1.7    70  24.221453

  1. Reducción de Dimensionalidad

La reducción de dimensionalidad se utiliza para reducir el número de variables en el conjunto de datos, manteniendo la mayor cantidad de información posible.

Análisis de Componentes Principales (PCA)

from sklearn.decomposition import PCA

# Datos de ejemplo
data = {'A': [1, 2, 3, 4], 'B': [2, 3, 4, 5], 'C': [3, 4, 5, 6]}
df = pd.DataFrame(data)

# PCA
pca = PCA(n_components=2)
df_pca = pca.fit_transform(df)
print(df_pca)

Salida:

[[-2.44948974e+00 -1.11022302e-16]
 [-8.16496581e-01 -1.11022302e-16]
 [ 8.16496581e-01  1.11022302e-16]
 [ 2.44948974e+00  1.11022302e-16]]

Ejercicios Prácticos

Ejercicio 1: Codificación de Variables Categóricas

Dado el siguiente DataFrame, realiza la codificación One-Hot de la columna 'Ciudad'.

import pandas as pd

# Datos de ejemplo
data = {'Ciudad': ['Madrid', 'Barcelona', 'Valencia', 'Sevilla']}
df = pd.DataFrame(data)

# Tu código aquí

Ejercicio 2: Normalización de Datos

Dado el siguiente DataFrame, normaliza la columna 'Salario'.

import pandas as pd

# Datos de ejemplo
data = {'Salario': [30000, 50000, 70000, 100000]}
df = pd.DataFrame(data)

# Tu código aquí

Ejercicio 3: Creación de Nuevas Variables

Dado el siguiente DataFrame, crea una nueva columna 'Velocidad' que sea el resultado de dividir 'Distancia' entre 'Tiempo'.

import pandas as pd

# Datos de ejemplo
data = {'Distancia': [100, 200, 300, 400], 'Tiempo': [10, 20, 30, 40]}
df = pd.DataFrame(data)

# Tu código aquí

Soluciones

Solución Ejercicio 1

# Codificación One-Hot
df_encoded = pd.get_dummies(df, columns=['Ciudad'])
print(df_encoded)

Solución Ejercicio 2

from sklearn.preprocessing import MinMaxScaler

# Normalización
scaler = MinMaxScaler()
df['Salario_normalizado'] = scaler.fit_transform(df[['Salario']])
print(df)

Solución Ejercicio 3

# Creación de nueva variable
df['Velocidad'] = df['Distancia'] / df['Tiempo']
print(df)

Conclusión

La transformación de datos es un paso esencial en el preprocesamiento de datos para Machine Learning. Las técnicas de transformación adecuadas pueden mejorar significativamente la calidad de los datos y el rendimiento de los modelos. En esta sección, hemos cubierto varias técnicas comunes de transformación de datos, incluyendo la codificación de variables categóricas, la normalización y estandarización de datos, la creación de nuevas variables y la reducción de dimensionalidad. Con estas herramientas, estarás mejor preparado para preparar tus datos para el análisis y la construcción de modelos de Machine Learning.

Curso de Machine Learning

Módulo 1: Introducción al Machine Learning

Módulo 2: Fundamentos de Estadística y Probabilidad

Módulo 3: Preprocesamiento de Datos

Módulo 4: Algoritmos de Machine Learning Supervisado

Módulo 5: Algoritmos de Machine Learning No Supervisado

Módulo 6: Evaluación y Validación de Modelos

Módulo 7: Técnicas Avanzadas y Optimización

Módulo 8: Implementación y Despliegue de Modelos

Módulo 9: Proyectos Prácticos

Módulo 10: Recursos Adicionales

© Copyright 2024. Todos los derechos reservados