Reproducibilidad: semillas, configuraciones y entornos
random.seed(), np.random.seed(), archivos de configuración YAML y fijación del entorno con pip freeze.
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 learningUna 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.csvLectura 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.txtEntornos 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.txtComprobació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 yrandom_state - Configuraciones: todos los hiperparámetros en
config.yaml, cargados con PyYAML - Entornos: un
requirements.txtcon 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.
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
- Estructura profesional de directorios para proyectos de IA
- Git para proyectos de IA
- Reproducibilidad: semillas, configuraciones y entornos
- Buenas prácticas para Jupyter Notebooks