Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Scikit-learn desde cero, Unidad 3 — Estructura básica de un proyecto con scikit-learn, 3.1 — Datos de entrada ·

DataFrames de Pandas

DataFrames de Pandas: El formato ideal para scikit-learn

Introducción

En la ciencia de datos, los DataFrames son fundamentales, y forman parte esencial del ecosistema Python, junto con bibliotecas como NumPy y scikit-learn. Un DataFrame, en términos simples, es una estructura tabular que organiza los datos en filas (observaciones) y columnas (variables). En este artículo, exploraremos cómo usar DataFrames de Pandas para trabajar con scikit-learn. Los DataFrames son especialmente útiles porque proporcionan un formato claro e integrado para el manejo de datos, lo que facilita tanto su preparación como su uso en modelos de machine learning.

Explicación principal

Importar y cargar los datos

Primero, necesitamos importar la biblioteca pandas y cargar nuestros datos. A continuación te muestro un ejemplo:

import pandas as pd

# Cargar el dataset desde un CSV
data = pd.read_csv('ruta/al/archivo.csv')

# Mostrar las primeras 5 filas del DataFrame
print(data.head())

Preparar los datos para scikit-learn

Una vez que tenemos nuestro DataFrame, es necesario prepararlo de acuerdo a las necesidades de scikit-learn. Esto incluye separar los datos en X (características) y y (variable objetivo), así como dividirlos en conjuntos de entrenamiento y prueba.

# Separar características y variable objetivo
X = data.drop('objetivo', axis=1)
y = data['objetivo']

# Dividir el conjunto de datos
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

print(f"Datos de entrenamiento: {len(X_train)}")
print(f"Datos de prueba: {len(X_test)}")

Ejemplo completo

Aquí tienes un ejemplo completo que muestra cómo cargar, preparar y dividir los datos:

import pandas as pd
from sklearn.model_selection import train_test_split

# Cargar el dataset desde un CSV
data = pd.read_csv('ruta/al/archivo.csv')

# Separar características y variable objetivo
X = data.drop('objetivo', axis=1)
y = data['objetivo']

# Dividir el conjunto de datos
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

print(f"Datos de entrenamiento: {len(X_train)}")
print(f"Datos de prueba: {len(X_test)}")

Errores típicos / trampas

Erro 1: Olvidar el indexado correctamente

Un error común es olvidarse de realizar el indexado correcto al separar las columnas. Por ejemplo, si intentamos usar data['objetivo'] en lugar de data['objetivo'].values, obtendremos un ValueError.

Erro 2: No especificar la columna objetivo

Otro error frecuente es no especificar claramente cuál es el objetivo. Si omitimos esta columna, nuestro modelo se entrenará sin una variable de salida.

# Error: omitir la columna 'objetivo'
X = data.drop('objetivo', axis=1)  # Esto omite la columna 'objetivo'

# La corrección sería:
X = data.drop('objetivo', axis=1)
y = data['objetivo']

Erro 3: No dividir los datos

Dividir los datos es crucial para evaluar el rendimiento del modelo. Olvidar este paso puede llevar a un overfitting, donde nuestro modelo se vuelve demasiado optimizado para los datos de entrenamiento y no generaliza bien.

# Error: no dividir los datos
X_train = X  # Esto omite la división en conjuntos de entrenamiento y prueba

# La corrección sería:
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Checklist accionable

A continuación, te proporcionamos un checklist para asegurarte de que estás usando DataFrames de manera efectiva con scikit-learn:

  1. Importar las bibliotecas necesarias: pandas, sklearn.model_selection.
  2. Cargar el dataset en un DataFrame.
  3. Separar características y variable objetivo correctamente:
  • Utilizar drop para eliminar la columna del objetivo.
  • Usar [columna].values para obtener los valores de la variable objetivo.
  1. Dividir los datos en conjuntos de entrenamiento y prueba usando train_test_split:
  • Especificar el tamaño del conjunto de prueba (test_size).
  • Establecer un valor random_state para la reproducibilidad.

Cierre

Usar DataFrames de Pandas es una excelente práctica al trabajar con scikit-learn. Al garantizar que tus datos están en el formato correcto, mejoras significativamente el rendimiento y la eficiencia del modelo de machine learning. Recuerda siempre dividir tus datos correctamente para evitar overfitting, y asegúrate de separar las características y el objetivo claramente.

Siguientes pasos

  • Practica con diferentes conjuntos de datos.
  • Aprende a manejar errores comunes y corregirlos.
  • Explora más sobre feature engineering y transformación de datos.

¡Esperamos que este artículo te haya ayudado a entender mejor cómo usar DataFrames en scikit-learn!

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).