Learn AI with Python · Lección

Reproducibilidad: semillas, configuraciones y entornos

random.seed(), np.random.seed(), archivos de configuración YAML y fijación del entorno con pip freeze.

Lección 3 de 413 pasos

Reproducibilidad: semillas, configuraciones y entornos es una lección gratuita de Learn AI with Python en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Learn AI with Python, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Learn AI with Python incluye 4 lecciones en total.

¿Por qué es importante la reproducibilidad?

Un experimento que no se puede reproducir no es ciencia. Si ejecutar el mismo código dos veces produce resultados diferentes, no puede confiar en las comparaciones ni depurar regresiones.

Tres pilares hacen reproducible el trabajo de IA: semillas aleatorias fijas, configuraciones externalizadas y entornos con versiones fijadas.

Fuentes de aleatoriedad

La aleatoriedad puede aparecer en muchos lugares: la mezcla de datos, las divisiones de entrenamiento y prueba, la inicialización de pesos, el dropout y el aumento de datos. Cada uno puede utilizar un generador aleatorio diferente.

Para reproducir una ejecución, debe inicializar con una semilla todos los generadores que utilice su código.

Inicialización de Python y NumPy

Fije los generadores de la biblioteca estándar y de NumPy con una única semilla elegida (42 es una convención habitual).

import random
import numpy as np

random.seed(42)
np.random.seed(42)

Inicialización de frameworks

Los frameworks de ML tienen sus propios generadores. Inicialícelos también y pase la semilla a las funciones que acepten random_state.

import numpy as np
from sklearn.model_selection import train_test_split

X_train, X_test = train_test_split(X, test_size=0.2, random_state=42)
# torch.manual_seed(42) / tf.random.set_seed(42) for deep learning

Una función auxiliar set_seed

Encapsule toda la inicialización en una sola función y llámela al principio de cada script para no olvidar nunca ningún generador.

import random, os
import numpy as np

def set_seed(seed=42):
    random.seed(seed)
    np.random.seed(seed)
    os.environ["PYTHONHASHSEED"] = str(seed)

set_seed(42)

Los hiperparámetros codificados directamente son una trampa

Dispersar 0.01, 200 y 0.2 por el código hace que las ejecuciones sean difíciles de rastrear y modificar. ¿Era esa tasa de aprendizaje 0.01 o 0.001 en la ejecución que obtuvo la mejor puntuación?

La solución: coloque todos los hiperparámetros en un archivo de configuración, no en el código.

Archivos de configuración YAML

YAML es un formato legible para las personas, ideal para las configuraciones. Un solo archivo recoge todos los parámetros de una ejecución.

# config.yaml
seed: 42
model:
  name: random_forest
  n_estimators: 200
  max_depth: 8
training:
  test_size: 0.2
data:
  path: data/processed/train.csv

Lectura de YAML con PyYAML

Cargue la configuración al principio del script con PyYAML. Ahora el código lee los valores de cfg en lugar de tenerlos codificados directamente.

import yaml

with open("config.yaml") as f:
    cfg = yaml.safe_load(f)

print(cfg["model"]["n_estimators"])   # 200
set_seed(cfg["seed"])

Pasar la configuración al código

Las funciones reciben la configuración, o sus valores, como argumentos. Para ejecutar un experimento nuevo, cambie el archivo YAML, no el código Python.

from sklearn.ensemble import RandomForestClassifier

m = cfg["model"]
model = RandomForestClassifier(
    n_estimators=m["n_estimators"],
    max_depth=m["max_depth"],
    random_state=cfg["seed"],
)

Fijar el entorno

Las distintas versiones de las bibliotecas producen resultados diferentes. Fije las versiones exactas para que otras personas, y usted en el futuro, instalen la misma pila.

# requirements.txt with pinned versions
pandas==2.2.0
scikit-learn==1.4.0
numpy==1.26.4

# generate it with:
# pip freeze > requirements.txt

Entornos virtuales

Aísle cada proyecto para que sus versiones fijadas no entren en conflicto con las de otros proyectos. Cree y active un entorno virtual y, después, instale las dependencias desde el archivo de versiones fijadas.

python -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install -r requirements.txt

Comprobación rápida: hiperparámetros

Desea probar diez combinaciones diferentes de hiperparámetros y conservar cada ejecución reproducible y trazable.

Resumen: reproducibilidad

Ha aprendido los tres pilares de una IA reproducible:

  • Semillas: random.seed(42), np.random.seed(42), las semillas del framework y random_state
  • Configuraciones: todos los hiperparámetros en config.yaml, cargados con PyYAML
  • Entornos: un requirements.txt con versiones fijadas dentro de un entorno virtual

Cambie la configuración, no el código. A continuación: buenas prácticas para notebooks de Jupyter.

Gratis para empezar

Aprende Python con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
53
Lecciones
225

Preguntas frecuentes

¿La lección «Reproducibilidad: semillas, configuraciones y entornos» es gratis?

Sí — el texto completo de «Reproducibilidad: semillas, configuraciones y entornos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Learn AI with Python, actualiza a CoddyKit PRO. El curso de Learn AI with Python incluye 4 lecciones en total.

¿Qué aprenderé en «Reproducibilidad: semillas, configuraciones y entornos»?

random.seed(), np.random.seed(), archivos de configuración YAML y fijación del entorno con pip freeze. Practicas Learn AI with Python con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Learn AI with Python?

No se requiere experiencia previa. Learn AI with Python en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Reproducibilidad: semillas, configuraciones y entornos»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Learn AI with Python?

Sí. Cada lección de Learn AI with Python incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Estructura profesional de directorios para proyectos de IA
  2. Git para proyectos de IA
  3. Reproducibilidad: semillas, configuraciones y entornos
  4. Buenas prácticas para Jupyter Notebooks
← Volver a Learn AI with Python