• Home
  • Chi sono
  • Risorse
  • Contatti
  • Approfondimenti
  • Cerca nel sito

Lorenzo Govoni

Business e Tecnologia

  • Big Data
  • Business
  • Excel
  • Intelligenza Artificiale

Python e le librerie principali per il machine learning

Pyrhon

Con quasi un milione di siti web clienti, Python rappresenta spesso la lingua preferita dagli sviluppatori e dai data scientist che hanno bisogno di applicare tecniche statistiche o analisi dei dati nel loro lavoro.

La combinazione di sintassi coerente, i tempi di sviluppo più brevi e la flessibilità lo rendono adatto allo sviluppo di modelli di previsione sofisticati che possono essere collegati direttamente ai sistemi di produzione e all’apprendimento automatico.

Dopotutto, Python è un linguaggio di programmazione, orientato agli oggetti e di alto livello con semantica dinamica: queste caratteristiche gli permettono di esprimere idee molto potenti in pochissime righe di codice pur essendo molto leggibili.

Questo è possibile anche grazie all’ampio set di librerie, ossia insiemi di routine e funzioni scritte che svolgono un determinato compito, che possiede e può richiamare a seconda delle necessità.

Le librerie vengono spesso confuse con i termini framework e packages. Prima di vedere quali sono le più diffuse per il machine learning, vediamo di distinguere i termini tenendo conto di quanto stabilito dalla documentazione presente sul sito di Python.

 

Libreria

Innanzitutto possiamo considerare la libreria come un insieme di moduli.

Ogni modulo contiene delle istruzioni e definizioni semplici. L’accorpamento di vari moduli, quindi di istruzione codice, costituisce una libreria.

Spesso i moduli sono già stati scritti da altri sviluppatori, e non c’è bisogno di ripartire da capo ogni volta. Il loro scopo è quello di semplificare le attività, aiutando gli sviluppatori a scrivere solo poche righe anziché una grande quantità di comandi.

Il codice delle librerie richiama classi e metodi che normalmente definiscono operazioni specifiche in un’area del dominio.

Ad esempio, ci sono alcune librerie di matematica che possono far sì che lo sviluppatore chiami semplicemente la funzione senza ripetere l’implementazione di come funziona un algoritmo.

 

Packages

Per capire cosa sono i packages pensa alle cartelle (conosciute col nome directory) dove salvi i file nel computer.

Di solito non archiviamo tutti i nostri file nella stessa posizione. Utilizziamo una gerarchia di directory ben organizzata per un accesso più semplice.

File simili sono tenuti nella stessa directory, ad esempio, potremmo conservare tutti i brani musicali nella directory “musica”. Analogamente a questo, Python ha packages per directory e moduli per i file.

Dato che una directory può contenere sottodirectory e file, similmente, un pacchetto Python può avere sotto-pacchetti e moduli.

Una directory deve contenere un file chiamato __init__.py in modo che Python lo consideri come un pacchetto. Questo file può essere lasciato vuoto ma generalmente il codice di inizializzazione per quel pacchetto viene inserito in questo file.

 

 

Framework

A differenza delle librerie, per framework si intende ”un’astrazione, in cui il software che fornisce funzionalità generiche può essere modificato selettivamente da un ulteriore codice scritto dall’utente, fornendo così un software specifico per l’applicazione“.

Si può considerare il framework come uno strumento software che fornisce un modo per creare ed eseguire applicazioni web e per farlo si avvale spesso di librerie e packages.

Utilizzando un framework web non è necessario scrivere codice per conto proprio e perdere tempo cercando possibili errori di calcolo e bug.

All’inizio dello sviluppo web, tutte le applicazioni erano codificate a mano e solo lo sviluppatore di una determinata app poteva cambiarlo o distribuirlo.

I framework Web hanno introdotto un modo semplice per uscire da questa trappola.

Dal 1995, tutte le seccature legate al cambiamento della struttura di un’applicazione sono state messe in ordine a causa della comparsa di una prestazione generale. E questo è il momento in cui sono apparse le lingue specifiche del web. La loro varietà ora funziona bene sia per pagine web statiche che dinamiche.

Possiamo avere due tipologie di Framework web:

  • Server-side: definito anche come framework backend, sono applicazioni software che facilitano la scrittura, la manutenzione e la scalabilità delle applicazioni web.

    Forniscono strumenti e librerie che semplificano le comuni attività di sviluppo Web, inclusi gli URL di routing ai gestori appropriati, l’interazione con i database, le sessioni di supporto e l’autorizzazione dell’utente, l’output di formattazione (ad esempio HTML, JSON, XML) e il miglioramento della sicurezza dagli attacchi web.

  • Client-side: definito anche framework frontend, consiste in un pacchetto costituito da una struttura di file e cartelle di codice standard (HTML, CSS, documenti JS ecc.).

    Si occupa essenzialmente delle parti rivolte verso l’esterno di un sito Web o di un’applicazione web.  In breve, ciò che un utente vede quando apre l’app.

Esiste una terza situazione (definita Full-stack Framework) che è la combinazione di entrambe le estremità frontend e backend. Uno sviluppatore full stack è un tuttofare.

Sono responsabili per tutti i livelli di sviluppo, da come il server è impostato per il CSS relativo alla progettazione. C’è da dire che è complesso gestire entrambe le parti.

Per maggiori informazioni in merito consiglio la lettura del seguente articolo.

Se inoltre si vuole conoscere la lista dei web frameworks scritti in linguaggio Phyton si può vedere il seguente link (uno dei più popolari è Django).

 

Librerie più popolari nel machine learning

Vediamo ora quali che sono le librerie più importanti di Python utilizzate nel machine learning.

Scikit-learn: fornisce una gamma di algoritmi di apprendimento supervisionato e non supervisionato tramite un’interfaccia coerente in Python. E’ così possibile risolvere facilmente algoritmi di regressione, di classificazione e clustering.

Anche attività quali la trasformazione di dati, la selezione delle funzionalità e i metodi di ensemble possono essere implementate in poche righe.

Scikit-learn è basato su SciPy. Quindi, prima di poter usare scikit-learn, devi installare SciPy. I moduli o le estensioni per SciPy sono convenzionalmente chiamati SciKit.

 

 

Pandas: libreria che fornisce gli strumenti per l’analisi dei dati nel linguaggio python. Il pacchetto è open source e viene fornito con diverse strutture dati che possono essere utilizzate per diverse attività di manipolazione dei dati.

Pandas è una libreria molto popolare per il recupero e la preparazione dei dati per l’uso futuro in altre librerie ML come Scikit-learn o Tensorflow.

Permette inoltre di recuperare facilmente i dati da diverse fonti: database SQL, testo, CSV, Excel, file JSON e molti altri formati meno popolari.

Una volta che i dati sono in memoria, ci sono dozzine di operazioni diverse per analizzare, trasformare, recuperare i valori mancanti, pulire il set di dati, nonché operazioni tipo SQL e un set di funzioni statistiche per eseguire anche una semplice analisi.

NumPy: sta per Numeric Python e rappresenta il pacchetto fondamentale per il calcolo scientifico con Python. NumPy è ovviamente una delle più grandi librerie di calcolo matematico e scientifico per Python.

Una delle funzionalità più importanti di NumPy è la sua interfaccia Array. Questa interfaccia può essere utilizzata per esprimere immagini, onde sonore o altri flussi binari grezzi come matrici di numeri reali con dimensione N.

La conoscenza di NumPy è molto importante per l’apprendimento automatico e la scienza dei dati.

 

Matplotlib: L’apprendimento automatico migliore e più sofisticato è privo di significato se non puoi comunicarlo ad altre persone.

Quindi, come si fa a trasformare effettivamente il valore da tutti questi dati che si hanno? 

È qui che Matplotlib viene in soccorso. È una libreria Python standard utilizzata per la creazione di diagrammi e grafici 3D. È piuttosto di basso livello, il che significa che richiede più comandi per generare grafici e figure piacevoli rispetto ad alcune librerie avanzate.

Tuttavia, il rovescio della medaglia è la flessibilità. Con abbastanza comandi, puoi creare praticamente qualsiasi tipo di grafico che desideri con Matplotlib. È possibile creare diversi grafici, da istogrammi e grafici a dispersione a grafici con coordinate non cartesiane.

 

Theano: rappresenta una libreria Python che consente di valutare, ottimizzare e definire espressioni matematiche che coinvolgono efficacemente gli array multidimensionali (è simile a NumPy).

Questa libreria ottimizza l’utilizzo della CPU e della GPU e migliora le prestazioni del calcolo intensivo dei dati, in quanto il codice Theano è scritto in modo tale da sfruttare il vantaggio di come funziona un compilatore del computer. 

È una delle librerie di deep learning più utilizzate fino ad oggi, anche se l’ultima versione è stata rilasciata nel 2017.

 

TensorFlow: Secondo diverse studi Tensorflow è una delle librerie più utilizzate da chi si affaccia nel mondo del deep learning.

Tale libreria è stata sviluppato da Google, e quasi tutte le sue applicazioni utilizzano Tensorflow per l’apprendimento automatico. Se stai utilizzando le foto di Google o la ricerca vocale di Google, indirettamente stai utilizzando i modelli creati utilizzando Tensorflow.

Tensorflow è solo un framework computazionale per esprimere algoritmi che coinvolgono un gran numero di operazioni di tensori, poiché le reti neurali possono essere espresse come grafici computazionali tramite una serie di operazioni sui tensori. I tensori sono matrici N-dimensionali che rappresentano i nostri dati.

 

Pytorch: rappresenta una popolare libreria di Deep Learning creata da Facebook. Oltre alla CPU, supporta calcoli accelerati dalla GPU. La libreria è focalizzata sul portare agli utenti un’esperienza di modellazione veloce e flessibile e ha ottenuto molta trazione nella comunità di Deep Learning.

Rispetto a Tensorflow, è più facile da imparare e da usare. Il rovescio della medaglia è che PyTorch è meno maturo di Tensorflow, ma la comunità sta crescendo rapidamente e ci sono già molti materiali didattici e tutorial.

 

Keras: è una delle librerie di apprendimento automatico più interessanti. Gli esperti consigliano di partire con questa libreria, a chi inizia a studiare il machine learning, poiché fornisce un modo più semplice per esprimere reti neurali.

Fornisce inoltre alcune utilità per l’elaborazione di set di dati, la compilazione di modelli, la valutazione dei risultati, la visualizzazione di grafici e molto altro.

Gli attuali vantaggi di Keras, a differenza di PyTorch, sono che è più maturo, ha una community più grande e un sacco di tutorial pronti all’uso. Inoltre, può utilizzare Tensorflow.

D’altra parte, PyTorch fornisce alcune caratteristiche molto interessanti (come il debug interattivo o la definizione dinamica del grafico) e sta crescendo rapidamente.

 

Conclusione

Le librerie Python appena viste semplificano di molto il machine learning (ce ne sono anche altre non citate molto utili), e hanno permesso di migliorare i risultati ottenuti dall’intelligenza artificiale.

Se si vuole iniziare a studiare il machine learning avvalendosi del linguaggio Python, è possibile iniziare a conoscere gli algoritmi di machine learning classici e concentrarsi maggiormente sull’uso di Scikit-learn, Pandas, NumPy e Matplotlib.

Solo dopo aver ottenuto una buona comprensione di esso, ha senso passare allo studio delle reti neurali utilizzando gli strumenti offerti da Tensorflow, PyTorch o Keras e inoltrarsi nel mondo del Deep Learning.

Se si vogliono approfondire gli argomenti trattati nell’articolo, consiglio la lettura dei seguenti link (solo in lingua inglese):

  • Che cos’è una libreria Python (Quora)? 
  • Moduli e Packages; 
  • AnPyLar – il python front-end​ framework; 
  • Cos’è un web Framework? 
  • Differenza tra Framework e Libreria;
  • Migliori librerie Python per il Machine Learning;
  • 10 migliori librerie e frameworks per il machine learning.
  • La professione del Data Scientist
    La professione del Data Scientist
  • Elaborazione del linguaggio naturale: sette cose da sapere
    Elaborazione del linguaggio naturale: sette cose da sapere
  • Kanban: la gestione visiva dei sistemi produttivi Just in Time
    Kanban: la gestione visiva dei sistemi produttivi…
  • Semplice architettura di rete neurale convoluzionale
    Semplice architettura di rete neurale convoluzionale
Share
Pin
Share
Tweet

Intelligenza Artificiale Framework, Librerie, Packages

  • Home
  • Archivio
  • Risorse
  • Newsletter
  • Cerca nel sito

Copyright © 2021 · Lorenzo Govoni - Privacy Policy