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 ·

Errores comunes de formato

Errores comunes de formato

Introducción

En la práctica de machine learning, los datos son la base de todo. Un error en la estructura o formato de los datos puede desestabilizar incluso los modelos más bien construidos. Scikit-learn es una herramienta poderosa pero sensible a ciertos detalles en el manejo de los datos. En esta guía, exploraremos errores comunes que pueden surgir al trabajar con datos y cómo evitarlos.

Explicación principal con ejemplos

Ejemplo de carga de datos

Primero, vamos a cargar un conjunto de datos ficticio usando NumPy y Pandas para ilustrar los problemas que podemos encontrar. Este es un script básico:

import numpy as np
import pandas as pd

# Datos en forma de array de NumPy
data_np = np.array([[10, 20], [30, 40]])

# Datos en forma de DataFrame de Pandas
df = pd.DataFrame({
    'A': ['a', 'b'],
    'B': [1.5, 2.8]
})

Errores comunes

Errores con NumPy arrays

  1. Tipos de datos incompatibles: Los modelos esperan ciertos tipos de datos para sus inputs y outputs. Si las características en tu array son de un tipo que no es compatible (por ejemplo, string cuando se necesita numérico), podrías recibir errores o resultados erróneos.
  1. Dimensiones incorrectas: Scikit-learn espera que los arrays estén en la forma correcta. Por ejemplo, si estás utilizando un modelo de regresión lineal y tienes una matriz 2D con dos columnas, pero necesitas una matriz 1D (un vector), podrías enfrentarte a errores.
  1. Faltantes no manejados: Algunos modelos no pueden manejar valores faltantes en los arrays NumPy de forma directa. Si hay valores faltantes en tus datos, deberás usar métodos como np.nan_to_num() o Pandas para reemplazarlos antes del entrenamiento.

Errores con DataFrames de Pandas

  1. Tipos de columnas incorrectos: Asegúrate de que las columnas sean el tipo correcto. Por ejemplo, si estás usando un modelo que espera características numéricas y tienes una columna categórica, podrías recibir errores o resultados erróneos.
  1. Faltantes en DataFrames: Pandas maneja los valores faltantes de manera más flexible que NumPy, pero aún así es importante prevenirlos. Valores faltantes pueden causar problemas durante el entrenamiento del modelo.
  1. Uso incorrecto de métodos de transformación: Métodos como df.drop(), df.fillna() o df.apply() deben ser utilizados con precaución para no alterar los datos en formas no intencionales.

Ejemplo corregido

# Corrigiendo tipos y faltantes
import pandas as pd

data_df = pd.DataFrame({
    'A': ['a', 'b'],
    'B': [1.5, 2.8]
})

# Manejo de valores faltantes
data_df['C'] = data_df['B'].fillna(0)  # Reemplaza los valores faltantes con cero

# Convertir a NumPy array para usar en Scikit-learn
X = data_df[['A', 'B']].values
y = data_df['C'].values

Errores típicos / trampas

  1. Confundir X e y: Es fácil olvidar que X son las características y y es el target. Confundirlos puede dar lugar a errores en la creación de modelos.
  1. Ignorar tipos de datos: Si no tienes claro qué tipo de dato esperan los métodos o modelos, podrías enfrentarte a errores durante la ejecución del código.
  1. No manejar faltantes correctamente: Los valores faltantes pueden causar problemas en tu modelo y deben ser manejados adecuadamente antes de su entrenamiento.
  1. Usar tipos no compatibles directamente con Scikit-learn: Algunos modelos tienen requerimientos específicos sobre el tipo de datos que aceptan, como requerir floats o int64 para ciertas características.
  1. Convertir a NumPy arrays incorrectamente: Convertir DataFrames a NumPy arrays es útil, pero asegúrate de hacerlo correctamente y con los tipos adecuados.

Checklist accionable

  1. Verifica el tipo de datos en tus arrays.
  2. Maneja correctamente los valores faltantes antes del entrenamiento.
  3. Asegúrate de que X e y estén bien definidos y no confundidos.
  4. Convierte tus DataFrames a NumPy arrays si es necesario.
  5. Verifica las dimensiones de tu array antes de usarlo en un modelo.

Siguientes pasos

  1. Prueba tus datos: Antes de entrenar cualquier modelo, prueba los datos con algunos modelos simples para asegurarte de que no hay problemas ocultos.
  2. Revisa la documentación oficial: La documentación de Scikit-learn es una excelente fuente de información sobre las expectativas y comportamientos del software.
  3. Practica con conjuntos de datos pequeños primero: Antes de aplicar lo aprendido a conjuntos de datos más grandes, prueba en un entorno controlado.

Siguiendo estos consejos, podrás evitar muchos errores comunes relacionados con el formato de los datos y asegurarte de que tus modelos funcionen correctamente.

Contacto

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