Trasforma il tuo progetto di Data Science scopri i benefici di memorizzare le variabili in un file YAML

Trasforma il tuo progetto di Data Science con memorizzazione variabili in file YAML

Questo post del blog discuterà i vantaggi dell’utilizzo di un file YAML come repository centrale per memorizzare variabili, parametri e iperparametri in un progetto di data science. Spiegherà come questo metodo di archiviazione può migliorare l’efficienza e l’organizzazione del progetto consentendo un facile accesso e modifica di questi valori. Il post fornirà anche esempi e una guida passo-passo per implementare questo metodo in un progetto di data science.

Foto di Fikri Rasyid su Unsplash

Introduzione

I problemi di machine learning e deep learning riguardano tutti l’esperimento con diversi parametri. L’esperimento diventa piuttosto difficile man mano che aumenta il numero di parametri. Questa difficoltà è in parte dovuta all’impegno manuale richiesto per modificare i valori dei parametri per ogni iterazione dell’esperimento. Ma per fortuna c’è un modo per rendere tutto più facile. Utilizzando la collaborazione dei file YAML con il codice Python, possiamo eseguire facilmente diversi esperimenti. Questo articolo mostrerà come utilizzare il file YAML e il codice Python per diverse sperimentazioni.

Prerequisiti

  • Conoscenza di base del linguaggio di programmazione Python
  • Conoscenza di base del funzionamento del ciclo di vita del machine learning

Agenda

  • Cos’è YAML?
  • Perché non utilizzare il modo convenzionale di memorizzare le variabili?
  • Vantaggi di memorizzare i parametri in modo centralizzato nel file YAML
  • Download della libreria Python PyYAML
  • Memorizzazione delle variabili nel file YAML
  • Memorizzazione di liste e dizionari nel file YAML
  • Caricamento delle variabili dal file YAML nel file Python
  • Conclusioni

Cos’è YAML?

Prima di addentrarci direttamente nell’argomento, impariamo alcune informazioni di base su YAML.

YAML significa ‘YAML Ain’t Markup Language’. YAML è un linguaggio che memorizza i dati in un formato leggibile molto umano, a differenza dei file XML o JSON. Un file YAML memorizza solo informazioni, quindi non include alcun tipo di azione. Inoltre, è possibile trasferire facilmente i dati da file YAML ad altri linguaggi di programmazione, come Python.

Perché non utilizzare il modo convenzionale di memorizzare le variabili?

Per spiegare questi concetti qui, userò come esempio un progetto di data science chiamato ‘rilevamento delle frodi con carte di credito’. Lo scopo del progetto è semplice. Il progetto si concentra sul rilevare se la transazione effettuata è fraudolenta o meno. Questo viene fatto utilizzando alcune informazioni sulla transazione in questione. Alcuni degli esempi che potrebbero essere utilizzati come informazioni sono:

  • La distanza tra il luogo in cui viene effettuata la transazione e l’indirizzo di casa del proprietario della carta di credito.
  • La distanza dall’ultimo luogo di transazione
  • Il rapporto tra il prezzo medio delle transazioni e il prezzo corrente della transazione
  • L’indirizzo IP da cui è stata effettuata la transazione
  • Pagamento online o offline effettuato

La rilevazione viene effettuata dal modello di machine learning addestrato sulla cronologia delle transazioni con carta di credito dell’utente.

Il progetto di data science basato su machine learning ha molte fasi, come l’esplorazione dei dati, la pulizia dei dati, la ricerca del modello di machine learning adatto al problema, l’ottimizzazione del modello e il salvataggio del modello. Questi sono solo alcuni dei molti passaggi presenti in tali progetti. Ciascuno di questi passaggi crea molte variabili, specialmente nel passaggio in cui si deve trovare l’algoritmo di machine learning adatto e nel passaggio in cui si deve ottimizzare l’algoritmo di machine learning adatto.

Il modo convenzionale di memorizzare le variabili crea problemi in questi casi. Cerchiamo di capire meglio. Trovare l’algoritmo di machine learning adatto per adattarsi ai dati e ottenere la massima precisione da esso dipende in gran parte dall’esperimento con gli iperparametri dell’algoritmo. Utilizzando il modo convenzionale, dovremmo andare in giro per ogni file e cambiare manualmente quei parametri per eseguire ogni esperimento. Ciò diventa molto complicato ed è soggetto a errori. Per evitare un tale lavoro superfluo e errori stupidi, viene utilizzato un nuovo approccio. Capiremo questo nuovo approccio più avanti in questo articolo.

Vantaggi di memorizzare i parametri in modo centralizzato nel file YAML

A differenza del modo convenzionale di memorizzare i parametri nel rispettivo file, questo approccio consiglia di memorizzare tutti i parametri in un unico file. È possibile ottenere i parametri quando necessario da questo file importando il file. Questo approccio è più snello e meno soggetto a errori stupidi. È possibile utilizzare anche un file YAML per memorizzare i percorsi dei file.

Una domanda potrebbe sorgere nella mente: perché usare solo il file YAML? La risposta a questa domanda risiede nella sintassi estremamente semplice dei file YAML. È possibile utilizzare altri tipi di file, ma per semplificare una questione semplice, è consigliabile utilizzare il file YAML.

Ora vediamo come fare usando del codice.

Download della libreria Python PyYAML

Una delle popolari librerie di terze parti di Python è PyYAML. Questa libreria è attivamente mantenuta ed è anche menzionata sul sito web ufficiale di YAML. Per installare questa libreria, utilizzare il seguente comando nel terminale.

python -m pip install pyyaml

Dopo aver completato l’installazione della libreria, utilizzare il seguente comando per importarla nel file Python.

import yaml

Si noti che anche se PyYAML è il nome della libreria che hai installato, importerai il pacchetto utilizzando il nome ‘yaml’ nel codice Python.

Memorizzazione delle variabili nel file YAML

Il file YAML ha una sintassi leggermente simile a quella del linguaggio Python. Nel file YAML, gli indent sono utilizzati proprio come in Python. Diamo un’occhiata al file YAML per capire questo.

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

Qui stiamo memorizzando le variabili in due gruppi chiamati SimpleImputer e OrdinalEncoder. Queste sono le variabili utilizzate come parametri per i trasformatori di imputazione semplice e di codifica ordinale di Scikit-Learn nella fase di pre-elaborazione.

Si noti che non è necessario utilizzare virgolette attorno ai valori delle variabili di stringa nel file YAML. Ma anche se avessimo utilizzato virgolette attorno ai valori delle variabili di stringa, non farebbe alcuna differenza.

Memorizzare i percorsi dei file nel file YAML è simile al salvataggio di qualsiasi altro valore nel file YAML. Di seguito sono riportati i percorsi utilizzati nella pre-elaborazione dei dati e nell’addestramento del nostro modello di rilevazione delle frodi con carte di credito.

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

Memorizzazione di liste e dizionari nel file YAML

Ci sono due modi per memorizzare liste e dizionari nel file YAML. Di seguito sono riportati gli iperparametri utilizzati per l’ottimizzazione degli iperparametri del modello di classificazione random forest utilizzato per la rilevazione delle frodi.

Approccio-1:

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

Nel primo approccio, inseriamo semplicemente la lista o i dizionari come facciamo nel linguaggio di programmazione Python. I dizionari sono rappresentati nella semplice coppia chiave: valore.

Approccio-2:

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

Nel secondo approccio, tutti i membri della lista iniziano con il simbolo ‘-‘ allo stesso livello di rientro. I dizionari sono rappresentati nella semplice coppia chiave: valore.

Caricamento delle variabili dal file YAML nel file Python

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

Ora diciamo che vogliamo accedere alla variabile ‘verbose’ dal nostro file ‘parameters.yaml’ nel file Python. Possiamo farlo nel seguente modo.

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

Potresti chiederti perché fare tutta la fatica di importare le variabili nel file Python dal file YAML quando possiamo semplicemente inizializzare la variabile verbose come 3 qui nel file Python. C’è una ragione dietro questa pratica di codifica.

Diciamo che vogliamo utilizzare questa variabile in più file. E diciamo che vogliamo aggiornare la variabile verbose, quindi dovremo passare attraverso tutti i file uno per uno e poi cambiarla. Se volessimo memorizzare la variabile nel file YAML e poi importarla in ogni file Python, una volta che cambiamo il valore della variabile nel file YAML, sarà riflesso in ogni file Python in cui viene utilizzato.

Conclusioni

In questo articolo, abbiamo imparato perché non dovremmo utilizzare l’approccio tradizionale di memorizzazione delle variabili nei file Python. Inoltre, abbiamo appreso quali sono i vantaggi dell’uso di un file YAML per memorizzare le variabili e come ciò aiuta negli esperimenti nel progetto di apprendimento automatico. Controlla il seguente link per l’intero codice di questo articolo.

Scopri i vantaggi della memorizzazione delle variabili in un file YAML

Passa al contenuto Espandi YouTube (e Twitch) nella console. Schermo intero per la migliore esperienza. Fork per l’audio personalizzato…

replit.com

Outro

Spero che ti sia piaciuto l’articolo. Se hai qualche pensiero sull’articolo, fammelo sapere. Inoltre, se ti è piaciuto l’articolo, per favore fai un applauso.

Collegati con me su LinkedIn.

Scopri di più su di me sul sito web.

Scrivimi a [email protected]

Buona giornata!