Blog.

Python Libraries per Data Science and Machine Learning


Autore
Andrea Provino
Data
Tempo di lettura
4 minuti
Categoria
Data Science, machine-learning

python-libraries-for-machine-learning-production-ready-data-science-deep-learning

Ho individuato e raccolto per te le librerie Python (Python Libraries) per Data Science e Machine Learning.

L’articolo sarà in continua evoluzione, così da arricchirlo costantemente di nuovi potenti tool.

L’obiettivo è quello di fornirti validi aiuti nella creazione di modelli di machine learning e nel loro rilascio in produzione.

Parola d’ordine? Open Source.

Python Libraries

Python è tra i linguaggi di programmazione maggiormente impiegati in ambito data science e nella creazione di modelli di machine learning, grazie alla sua semplicità e versatilità.

Da queste premesse muove l’idea di andare alla scoperta di preziosi tool che agevolino e semplifichino la nostra vita, consentendoci di risolvere nuovi problemi.

Basta indugi, iniziamo!

Palladium

La prima delle Python Libraries che esaminiamo è chiamata Palladium.

Si tratta di un progetto relativamente poco noto, sviluppato internamente a OttoGroup, in questo momento una delle più gradi società di e-commerce al mondo.

L’obiettivo era quello di offrire una transizione indolore dall’ambiente di sviluppo a quello di produzione, evitare boilerplate in progetti di machine learning, offrire alta scalabilità e abbattere i costi di licenza.

Così è nato Palladium, un framework per lo sviluppo di soluzioni di machine learning e data science, basato su scikit-learn.

Implementa operazioni comunemente richieste nello sviluppo di un progetto di machine learning come:

  • caricamento dataset
  • model training e ricerca iperparametri
  • web serive
  • persistenza dati

In questo modo lasciamo la mente concentrasi sullo sviluppo del modello vero e proprio.

Siamo così in grado di ridurre i costi di sviluppo e mantenimento implementando una soluzione versatile e flessibile.

Attraverso dei file di configurazione, andiamo a definire le specifiche del progetto: la composizione del dataset, le operazioni da eseguire, il modello da creare, etc.

Una delle funzionalità che più mi ha colpito è senza dubbio la possibilità di avviare un web service in pochi secondi, configurando un endpoint per la ricezione delle previsioni: fantastico!

Qui puoi trovare la documentazione completa.

Skorch

La seconda delle Python Libraries di questo post è definita Skorch.

Una valida alternativa a TensorFlow nello sviluppo di reti neurali artificiali è PyTorch.

Ora, consideriamo la situazione in cui tu voglia sfruttare sklearn e PyTorch congiuntamente.

La soluzione si chiama Skorch.

Due elementi che potrebbero tornarti utile a questo proposito sono:

Dask

Dask è una potente libreria python per il calcolo parallelo (parallel computing)

La libreria si compone di due parti:

  • Pianificazione dinamica delle attività (Dynamic task scheduling) ottimizzata per il calcolo. È una cosa simile ad Apache AirFlow, Spotify Luigi, Celery o Make, con la differenza che Dask è ottimizzata per interactive computational workloads.
  • Collezioni di Big Data come array paralleli, dataframes, e liste che estendono le interfacce comuni di NumPy, Pandas, o Python iterators superando le limitazioni. Queste collezioni parallele sono gestite dal Dynamic task scheduling.

I motivi per cui scegliere Dask sono molteplici.

Grazie all’interfaccia estremamente familiare, per chi opera quotidianamente con Pandas e Numpy, la curva di apprendimento si appiattisce.

La sua flessibilità ha poi davvero pochi eguali: scala agevolmente da un laptop a un cluster di 100 macchine.

Dask è quindi elastico e a bassa latenza, fondamentale quando si sposta l’esecuzione dalla memoria al disco (o all’SSD).

La documentazione illustra poi nel dettaglio ogni particolarità di questa versatile Python Library per Big data e data science.

Qualora decidessi d’impiegarlo, immagino che questo Dask Cheat Sheet ti possa tornare parecchio utile!

A questo potrebbe essere utile ricorrere a un esempio che ci aiuti a comprendere meglio come Dask si riveli particolarmente efficace.

Consideriamo un’operazione di Grid Search per l’individuazione degli iperparametri migliori:

 'grid_search': {
        'param_grid': {  # 3 * 4 * 4 * 5 = 240 fits!
            'net__lr': [0.03, 0.1, 0.3],
            'net__max_epochs': [50, 100, 200, 400],
            'net__num_units': [5, 10, 20, 40],
        },

Persino un numero così esiguo di variazioni produce in realtà 240 fits.

Dask consente di parallelizzare il calcolo in cluster e velocizzare la ricerca.

Pe ril momento è tutto!

Un caldo abbraccio, Andrea.

Taggedconsiglidata scienceportfolio project


Ultimi post

Patricia Merkle Trie

Il Practical Algorithm To Retrieve Information Coded In Alphanumeric Merkle Trie, o Patricia Merkle Trie è una struttura dati chiave-valore usatada Ethereum e particolarmente efficiente per il salvataggio e la verifica dell’integrità dell’informazione. In questo post ne studieremo le caratteristiche. Prima di procedere, ci conviene ripassare l’introduzione al Merkle Tree nella quale abbiamo chiarito il […]

Andrea Provino
ethereum-patricia-merkle-tree
Tree Data Structure: cos’è un Merkle Tree

Un Merkle Tree è una struttura dati efficiente per verificare che un dato appartenga a un insieme esteso di elementi. È comunemente impiegato nelle Peer to Peer network in cui la generazione efficiente di prove (proof) contribuisce alla scalabilità della rete. Capire i vantaggi di questa struttura ci tornerà utile nel nostro percorso di esplorazione […]

Andrea Provino
merkle-tree-cover
UTXO: come funziona il modello Unspent Transaction Outputs

Per tenere traccia dei bilanci utente, la blockchain di Bitcoin sfrutta un modello di contabilità definito UTXO o Unspent Transaction Outputs. In questo articolo ne esaminiamo le caratteristiche. Ogni blockchain è dotata di un sistema di contabilità, un meccanismo attraverso cui tenere traccia dei bilanci di ciascun utente. I due grandi modelli di riferimento nel […]

Andrea Provino
bitcoin-utxo
Cos’è Ethereum

Possiamo definire Ethereum come una macchina a stati distribuita che traccia le transizioni di un archivio dati general-purpose (i.e. una memoria in grado di registrare qualsiasi dato esprimibile come coppia di chiave e valore o key-value) all’interno della Ethereum Blockchain. È arrivato il momento di esplorare uno dei progetti tecnologici più innovativi e interessanti degli […]

Andrea Provino
ethereum