src

Introducción
La estructura de carpetas para un proyecto de Machine Learning (ML) con Python juega un papel crucial en la organización y la legibilidad del código.
A continuación, se presenta una estructura de carpetas recomendada:
src: Carpeta principal que contiene el código fuente del proyecto. Se subdivide en:
_notebooks: Almacena archivos Jupyter Notebook para el análisis exploratorio y la experimentación de modelos.data: Contiene las funciones relacionadas con la manipulación de datos, como carga, limpieza y transformación.preprocessing: Guarda las funciones específicas para el preprocesamiento de datos, como normalización, escalado y eliminación de valores atípicos.models: Almacena las funciones que implementan los modelos de ML, incluyendo entrenamiento, evaluación y selección de hiperparámetros.metrics: Contiene las funciones para la evaluación de los modelos ML, como cálculo de precisión, exactitud y curva ROC.
Ejemplo de organización:
src/
├── _notebooks/
│ ├── experiment_01.ipynb
│ ├── experiment_02.ipynb
│ └── ..
├── data/
│ ├── load_data.py
│ ├── clean_data.py
│ └── transform_data.py
├── preprocessing/
│ └── normalize_data.py
├── models/
│ ├── train_model.py
│ ├── evaluate_model.py
│ └── select_hyperparameters.py
└── metrics/
└── calculate_metrics.py
Buenas Prácticas en Python
Además de la organización de la carpeta src, es importante seguir algunas buenas prácticas al escribir código Python en este contexto:
-
Seguir los Principios SOLID: Aplicar los principios de diseño SOLID (Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion) para escribir código modular y flexible.
-
Nombrar Conveniente: Utilizar nombres descriptivos y significativos para variables, funciones y clases que reflejen su propósito y funcionalidad.
-
Documentar el Código: Incluir comentarios claros y documentación en el código para explicar su funcionamiento, así como el propósito de las funciones y clases.
-
Seguir las Convenciones de Estilo: Adherirse a las convenciones de estilo de código de Python, como PEP 8, para garantizar la consistencia y legibilidad del código.
-
Utilizar Pruebas Unitarias: Escribir pruebas unitarias para todas las funciones y clases del código para garantizar su correcto funcionamiento y detectar errores de forma temprana.
-
Gestionar las Dependencias: Utilizar herramientas de gestión de dependencias, como Poetry o Pipenv, para gestionar las dependencias del proyecto y garantizar la reproducibilidad del entorno de desarrollo.