Transforma tu proyecto de Ciencia de Datos Descubre los beneficios de almacenar variables en un archivo YAML

Transforma tu proyecto de Ciencia de Datos con YAML

Esta publicación de blog discutirá los beneficios de usar un archivo YAML como un repositorio central para almacenar variables, parámetros e hiperparámetros en un proyecto de ciencia de datos. Explicará cómo este método de almacenamiento puede mejorar la eficiencia y organización del proyecto al permitir un fácil acceso y modificación de estos valores. La publicación también proporcionará ejemplos y una guía paso a paso para implementar este método en un proyecto de ciencia de datos.

Foto de Fikri Rasyid en Unsplash

Introducción

Los problemas de aprendizaje automático y aprendizaje profundo se tratan de experimentar con diferentes parámetros. La experimentación se vuelve bastante difícil a medida que aumenta el número de parámetros. Esta dificultad se debe en parte al esfuerzo manual requerido para cambiar los valores de los parámetros en cada iteración del experimento. Pero afortunadamente para nosotros, hay una manera de hacer esto más fácil. Usando la colaboración de archivos YAML con el código Python, podemos realizar diferentes experimentos con bastante facilidad. Este artículo demostrará cómo usar el archivo YAML y el código Python para diferentes experimentaciones.

Prerrequisitos

  • Conocimientos básicos del lenguaje de programación Python
  • Conocimientos básicos del funcionamiento del ciclo de vida del aprendizaje automático

Agenda

  • ¿Qué es YAML?
  • ¿Por qué no usar la forma convencional de almacenar las variables?
  • Ventajas de almacenar los parámetros de forma central en el archivo YAML
  • Descargar la biblioteca de Python PyYAML
  • Almacenar las variables en el archivo YAML
  • Almacenar listas y diccionarios en el archivo YAML
  • Cargar las variables del archivo YAML en el archivo Python
  • Conclusión

¿Qué es YAML?

Antes de sumergirnos directamente en el tema, aprendamos alguna información básica sobre YAML.

YAML significa ‘YAML Ain’t Markup Language’. YAML es un lenguaje que almacena datos en un formato muy legible para los humanos, a diferencia de los archivos XML o JSON. El archivo YAML solo almacena información, por lo que no incluye ningún tipo de acciones en él. Además, uno puede transferir fácilmente los datos de los archivos YAML a otros lenguajes de programación, como Python.

¿Por qué no usar la forma convencional de almacenar las variables?

Para explicar estos conceptos aquí, usaré un ejemplo de un proyecto de ciencia de datos llamado ‘detección de fraudes con tarjetas de crédito’. El objetivo del proyecto es simple. El proyecto se centra en detectar si la transacción realizada es fraudulenta o no. Esto se hace utilizando cierta información sobre dicha transacción. Algunos ejemplos de información que se podrían utilizar son:

  • La distancia entre el lugar donde se realiza la transacción y la dirección de casa del titular de la tarjeta de crédito.
  • La distancia desde el último lugar de transacción
  • La relación entre el precio medio de la transacción y el precio actual de la transacción
  • La dirección IP desde la cual se ha realizado la transacción
  • Pago en línea o fuera de línea realizado

Esta detección se realiza mediante el modelo de aprendizaje automático entrenado en el historial de transacciones con tarjeta de crédito del usuario.

El proyecto de ciencia de datos basado en el aprendizaje automático tiene muchas etapas, como exploración de datos, limpieza de datos, encontrar el modelo de aprendizaje automático adecuado para el problema, ajustar el modelo y guardar el modelo. Estos son algunos de los muchos pasos presentes en tales proyectos. Cada uno de estos pasos crea muchas variables, especialmente en el paso donde se debe encontrar el algoritmo de aprendizaje automático adecuado y donde se realiza la sintonización del algoritmo de aprendizaje automático adecuado.

La forma convencional de almacenar variables crea problemas en estos casos. Entendamos esto con más detalle. Encontrar el algoritmo de aprendizaje automático adecuado para ajustar los datos y obtener la máxima precisión depende en gran medida de la experimentación con los hiperparámetros del algoritmo. Usando la forma convencional, tendríamos que recorrer cada uno de los archivos y cambiar esos parámetros manualmente para realizar cada experimento. Esto se vuelve muy agotador y propenso a errores. Para evitar ese trabajo innecesario y evitar errores tontos, se utiliza un nuevo enfoque. Entenderemos ese nuevo enfoque más adelante en este artículo.

Ventajas de almacenar los parámetros de forma central en el archivo YAML

A diferencia de la forma convencional de almacenar los parámetros en su respectivo archivo, este enfoque aconseja almacenar todos los parámetros en un solo archivo. Uno puede obtener los parámetros cuando sea necesario desde este archivo importando el archivo. Este enfoque es más liviano y menos propenso a errores tontos. Incluso se puede usar un archivo YAML para almacenar las rutas de los archivos también.

Una pregunta puede surgir en la mente ¿por qué usar solo el archivo YAML? La respuesta a esta pregunta radica en la sintaxis extremadamente simple de los archivos YAML. Se pueden utilizar otros tipos de archivos también, pero para hacer un asunto simple más simple, es recomendable usar el archivo YAML.

Ahora, veamos cómo se hace usando algo de código.

Descargando la biblioteca Python PyYAML

Una de las bibliotecas de terceros populares de Python es PyYAML. Esta biblioteca se mantiene activamente y también se menciona en el sitio web oficial de YAML. Para instalar esta biblioteca, usa el siguiente comando en la terminal.

python -m pip install pyyaml

Después de que se complete la instalación de la biblioteca, usa el siguiente comando para importarla al archivo de Python.

import yaml

Ten en cuenta que aunque PyYAML es el nombre de la biblioteca que has instalado, importarás el paquete usando el nombre ‘yaml’ en el código de Python.

Almacenando las variables en el archivo YAML

El archivo YAML tiene una sintaxis algo similar a la del lenguaje Python. En el archivo YAML, se utilizan sangrías al igual que en Python. Veamos el archivo YAML para entender esto.

SimpleImputer:  strategy: most_frequent  missing_values: nanOrdinalEncoder:  handle_unknown: use_encoded_value  unknown_value: 100

Aquí estamos almacenando variables en dos grupos llamados SimpleImputer y OrdinalEncoder. Estas son las variables que se utilizan como parámetros para los transformadores de imputación simple y codificador ordinal de Scikit-Learn en la etapa de preprocesamiento.

Ten en cuenta que no necesitamos usar comillas alrededor de los valores de las variables de cadena en el archivo YAML. Pero incluso si usáramos comillas alrededor de los valores de las variables de cadena, no hace ninguna diferencia.

Almacenar las rutas de archivos en el YAML es similar a guardar cualquier otro valor en el archivo YAML. A continuación se muestran las rutas utilizadas en el preprocesamiento de los datos y el entrenamiento de nuestro modelo de detección de fraudes en tarjetas de crédito.

data_preparation:  training_db: Training_db  training_db_dir: Training_Database  table_name: trainingGoodRawDataTable  schema_training: config/schema_training.json  good_validated_raw_dir: data/Training_Raw_Files_Validated/Good_Raw  master_csv: master.csv

Almacenando listas y diccionarios en el archivo YAML

Existen dos formas de almacenar listas y diccionarios en un archivo YAML. A continuación se muestran los hiperparámetros utilizados para la sintonización de hiperparámetros del modelo de clasificador de bosques aleatorios utilizado para la detección de fraudes.

Enfoque 1:

random_forest:  cv: 5  verbose: 3  param_grid: {n_estimators: [10, 50, 100, 130], max_depth: [2, 3], max_features: ['auto', 'log2']}

En el primer enfoque, simplemente colocamos la lista o diccionarios como lo hacemos en el lenguaje de programación Python. Los diccionarios se representan en el par clave: valor simple.

Enfoque 2:

random_forest:  cv: 5  verbose: 3  param_grid:     n_estimators:      - 10      - 50      - 100      - 130    max_depth:      - 2      - 3    max_features:      - auto      - log2    

En el segundo enfoque, todos los miembros de la lista comienzan con el símbolo ‘-‘ en el mismo nivel de sangría. Los diccionarios se representan en el par clave: valor simple.

Cargando las variables del archivo YAML en el archivo de Python

random_forest:  cv: 5  verbose: 3  param_grid:     n_estimators:      - 10      - 50      - 100      - 130    max_depth:      - 2      - 3    max_features:      - auto      - log2

Ahora supongamos que queremos acceder a la variable ‘verbose’ de nuestro archivo ‘parameters.yaml’ en el archivo de Python. Podemos hacerlo de la siguiente manera.

import yamlwith open('parameters.yaml') as p:  params = yaml.safe_load(p)verbose = params['random_forest']['verbose']

Puede que te preguntes por qué pasar por todo el problema de importar las variables en el archivo de Python desde el archivo YAML cuando podemos inicializar la variable verbose como 3 aquí en el archivo de Python. Hay una razón detrás de esta forma de práctica de codificación.

Supongamos que queremos usar esta variable en varios archivos. Y supongamos que queremos actualizar la variable verbose, entonces tendremos que revisar todos los archivos uno por uno y luego cambiarla. Si almacenáramos la variable en el archivo YAML y luego la importáramos en cada archivo de Python, una vez que cambiemos el valor de la variable en el archivo YAML, se reflejará en cada archivo de Python donde se use.

Conclusión

En este artículo, aprendimos por qué no debemos usar el enfoque tradicional de almacenar variables en archivos de Python. También aprendimos cuáles son las ventajas de usar un archivo YAML para almacenar las variables y cómo ayuda en los experimentos en el proyecto de aprendizaje automático. Consulta el siguiente enlace para ver el código completo de este artículo.

Descubra los Beneficios de Almacenar Variables en un Archivo YAML

Saltar al contenido Experimente YouTube (y Twitch) en la consola. Pantalla completa para mejor experiencia. Bifurque para audio y personalización…

replit.com

Outro

Espero que te guste el artículo. Si tienes algún pensamiento sobre el artículo, por favor házmelo saber. Además, si te gustó el artículo, por favor dale un aplauso.

Conéctate conmigo en LinkedIn.

Conoce más sobre mí en mi sitio web.

Envíame un correo a [email protected]

¡Que tengas un gran día!

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Confrontación de modelos de chat GPT-4 vs GPT-3.5 vs LLaMA-2 en un debate simulado - Parte 1

Con Meta revelando recientemente planes para construir un modelo de chat que competirá con GPT-4, y el lanzamiento de...

Inteligencia Artificial

Google Chrome ahora muestra resúmenes de artículos impulsados por IA para una lectura sin esfuerzo

Google está una vez más a la vanguardia de la innovación con su Experiencia Generativa de Búsqueda (SGE) impulsada po...

Inteligencia Artificial

15+ Herramientas de IA para Desarrolladores (Diciembre 2023)

GitHub Copilot GitHub Copilot se destaca como un asistente de codificación impulsado por IA líder en el mercado. Dise...