Vai al contenuto principale

Introduzione al Machine Learning con Julia

Scopri perché Julia è adatta al machine learning e fai un primo giro tra le funzionalità e i pacchetti che ti aiutano a iniziare.
Aggiornato 29 set 2026  · 12 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Che cos'è Julia?

Julia è un linguaggio di programmazione relativamente recente, rilasciato per la prima volta nel 2012. Anche se esiste solo da dieci anni, è cresciuto rapidamente ed è ora tra i primi 30 linguaggi di programmazione secondo il TIOBE index di ottobre 2022.

Programming Through Time

Una caratteristica distintiva di Julia è che è stata creata per il calcolo scientifico. Questo significa che Julia è facile da usare e veloce, pur essendo in grado di gestire grandi quantità di dati e calcoli complessi a velocità impressionanti. Un famoso slogan di Julia è che "va come C ma si legge come Python".

Julia è un linguaggio compilato che si legge come un linguaggio interpretato. La maggior parte degli altri linguaggi compilati tradizionali (come C o C++) in grado di risolvere problemi computazionalmente intensivi deve prima essere compilata in un formato leggibile dalla macchina prima di poter essere eseguita. 

Julia, invece, può ottenere le stesse prestazioni con la semplicità di un linguaggio interpretato (come Python) ma senza dover essere compilata prima dell'esecuzione. Julia utilizza infatti un compilatore Just-In-Time (JIT) che compila a runtime.

Perché scegliere Julia per il Machine Learning?

Python ha dominato per molto tempo il panorama della data science e del machine learning, e a buon diritto. È un linguaggio di programmazione incredibilmente potente e flessibile. Tuttavia, ci sono alcuni svantaggi di Python che in Julia non si presentano. 

Alcuni svantaggi di Python rispetto a Julia sono:

  • Python è un linguaggio interpretato più lento, con opzioni limitate per migliorarne la velocità. Questo può rendere inefficaci i progetti di machine learning su big data rispetto a Julia.
  • Python usa il single dispatch, che impone un limite significativo ai tipi che possono essere usati e condivisi tra funzioni e librerie.
  • Il calcolo parallelo e il threading non sono integrati nel design del linguaggio Python. Anche se esistono librerie che permettono un certo threading, non è ottimale.

In questa sezione vediamo diversi motivi per cui Julia è un'ottima scelta per il machine learning.

Puoi approfondire l'ascesa del linguaggio e se valga la pena imparare Julia nel 2022 in un post separato.

1. Semplicità e facilità d'uso

Julia ha una sintassi molto amichevole e vicina all'inglese. Questo rende più rapido iniziare a usarla e impararla, perché il codice è spesso intuitivo e facile da capire.

Julia è anche veloce e semplice da installare e utilizzare subito. Non serve installare distribuzioni speciali del linguaggio (come nel caso di Python con Anaconda) o seguire procedure d'installazione complicate (come con C e C++).

Per chi fa machine learning, prima elimini gli attriti nella parte di programmazione e prima puoi dedicarti a ciò che sai fare meglio: analizzare i dati e costruire modelli.

2. Velocità

Uno dei tratti distintivi di Julia è la velocità. Abbiamo già detto che Julia è un linguaggio compilato, con notevoli miglioramenti di prestazioni rispetto ai linguaggi interpretati.

Julia appartiene al "club dei petaflop" insieme a C, C++ e Fortran. Esatto: questo club esclusivo ha solo quattro membri e un requisito per entrarci: raggiungere velocità di un petaflop (cioè mille trilioni di operazioni) al secondo al picco delle prestazioni.

Nel machine learning non è raro imbattersi in grandi quantità di dati, quindi usare un linguaggio veloce può migliorare sensibilmente i tempi di training e ridurre i costi in produzione.

3. Il codice non vettorizzato è veloce

In Julia non è necessario vettorizzare il codice per aumentarne le prestazioni. Scrivere codice non vettorizzato sotto forma di loop e funzioni native è già veloce. Vettorizzare il codice in Julia può dare un leggero miglioramento, ma non è necessario.

Scrivere e usare codice non vettorizzato può farti risparmiare molto tempo nella costruzione di modelli di machine learning, perché non dovrai fare refactoring del codice solo per migliorarne la velocità.

4. Riutilizzo del codice e multiple dispatch

Julia usa il duck typing per "indovinare" il tipo appropriato per una funzione. In pratica: se cammina come un'anatra e starnazza come un'anatra, probabilmente è un'anatra. Quindi qualsiasi oggetto che rispetta le specifiche implicite di una funzione è supportato, senza bisogno di dichiararlo esplicitamente. 

Tuttavia, il duck typing non è sempre adatto ai casi particolari, ed è qui che entra in gioco il multiple dispatch. Con il multiple dispatch puoi definire più casi speciali per una funzione e, a seconda delle condizioni soddisfatte, la funzione sceglierà a runtime l'opzione più appropriata.

Il multiple dispatch è utile nel machine learning perché non devi pensare a ogni possibile tipo da far passare a una funzione. I pacchetti in Julia possono così restare molto flessibili, condividendo al tempo stesso codice e tipi tra pacchetti diversi. 

Considera il formato delle date: esistono diversi pacchetti che usano propri formati personalizzati per date e data/ora. Per esempio, in Python hai il formato datetime integrato e il formato datetime64[ns] di Pandas. In Julia c'è un unico formato basato sulle date, condiviso da tutti i pacchetti, dal modulo dates integrato.

5. Gestione dei pacchetti integrata

I pacchetti in Julia sono gestiti automaticamente con Pkg. Pkg è per Julia ciò che Pip è per Python, ma molto meglio. Gli ambienti in Julia sono gestiti tramite due file: Project.toml e Manifest.toml. Questi file indicano a Julia quali pacchetti sono usati nel progetto e le loro versioni. Invece di definire ambienti speciali all'esterno, la cartella in cui si trovano i tuoi file Julia (che contiene i file Project e Manifest toml) diventa l'ambiente.

Questo approccio integrato e semplificato alla gestione dei pacchetti rende più facile condividere e riprodurre i tuoi progetti e le tue analisi di machine learning.

6. Il problema dei due linguaggi

Sapevi che solo il 20-30% dei pacchetti Python è effettivamente composto da codice Python? 

Flux vs Tensorflow

Questa dipendenza da altri linguaggi nasce dal fatto che, per sviluppare pacchetti efficienti ed efficaci, bisogna ricorrere a linguaggi di basso livello come C e C++. 

Questi pacchetti usano tali linguaggi perché, nel calcolo scientifico, lo sviluppo di soluzioni e pacchetti coinvolge di solito due linguaggi: un linguaggio facile per il prototipo (come Python) per costruire una prima implementazione rapida della soluzione e poi un linguaggio veloce (come C++) in cui tutto il codice viene riscritto per la versione finale. 

Come puoi immaginare, è un processo lento e inefficiente non solo per lo sviluppo iniziale ma anche per la manutenzione a lungo termine e le nuove funzionalità.

Invece, i pacchetti in Julia possono essere prototipati, sviluppati e mantenuti in Julia. Di conseguenza, l'intero ciclo di sviluppo si riduce a una frazione del tempo.

Pacchetti Julia per il Machine Learning

Julia oggi conta oltre 7.400 pacchetti nel suo registro generale. Anche se siamo lontani dalla mole di pacchetti disponibili in Python (oltre 200.000), trovare il pacchetto giusto per risolvere un problema specifico può comunque essere impegnativo.

In questa sezione esploreremo i principali pacchetti di cui avrai bisogno per analizzare dati e costruire modelli di machine learning. 

Se però stai iniziando ora con il machine learning in Julia, prova prima la toolbox di pacchetti: MLJ. Questo pacchetto è stato creato appositamente per raccogliere i pacchetti di machine learning più popolari in un unico posto, facilmente accessibile, facendoti risparmiare tempo nella ricerca del pacchetto migliore per il tuo progetto. MLJ supporta attualmente oltre 20 diversi pacchetti di machine learning.

Qui sotto trovi un elenco di alcuni tra i pacchetti più comuni che incontrerai nei progetti di machine learning, dall'importazione, pulizia e visualizzazione dei dati fino alla costruzione dei modelli:

  • Notebook: Pluto, IJulia, Jupyter
  • Gestione pacchetti/ambienti: Pkg
  • Importazione e gestione dei dati: CSV, DataFrames
  • Grafici e output: Plots, StatsPlots, LaTeXStrings, Measures, Makie
  • Statistica e matematica: Random, Statistics, LinearAlgebra, StatsBase, Distributions, HypothesisTests, KernelDensity, Lasso, Combinatorics, SpecialFunctions, Roots
  • Pacchetti di machine learning specifici:
    • Modelli lineari generalizzati (ad es. regressione lineare, regressione logistica): GLM
    • Deep learning: Flux, Knet
    • Support vector machines: LIBSVM
    • Alberi decisionali, random forest, AdaBoost: DecisionTree
    • K-nearest neighbors: NearestNeighbors
    • Clustering k-means: Clustering
    • Analisi delle componenti principali: MultivariateStats

Esistono anche molte implementazioni e wrapper disponibili per pacchetti Python popolari come Scikit-Learn e Tensorflow. Tuttavia, non è detto che tu debba usare questi pacchetti, perché potresti perdere molti dei vantaggi potenti di Julia (come velocità e multiple dispatch).

Iniziare con Julia per il Machine Learning

Uno dei modi migliori per iniziare con Julia è l'ambiente notebook Pluto. In questa sezione discutiamo i vantaggi dell'uso di Pluto, soprattutto all'inizio del tuo percorso nella data science, quando stai ancora imparando a costruire progetti di machine learning con Julia. Vediamo anche alcune delle migliori risorse per imparare di più su Julia e sul machine learning.

Pluto

Plutojl

Pluto è un ambiente Notebook interattivo, semplice da usare e con un'interfaccia amichevole. Questa semplicità lo rende perfetto per chi inizia con Julia. Pluto offre anche molte funzionalità aggiuntive che ti permettono di creare soluzioni di machine learning ancora più efficaci quasi senza sforzo:

Reattivo

Quando valuti una cella, Pluto considera anche quali altre celle devono essere eseguite. Questa funzione assicura che eventuali celle dipendenti vengano aggiornate prima che la cella corrente venga valutata. 

Una grande qualità di Pluto è che è abbastanza intelligente da sapere esattamente quali celle vanno eseguite insieme alla cella corrente, così non ti ritrovi a dover aggiornare ogni cella se apporti una modifica da qualche parte nel notebook.

Pluto pulisce anche il codice vecchio o eliminato e aggiorna l'output di qualsiasi cella dipendente per riflettere questa azione. Se definisci una variabile in una cella e poi elimini quella cella, Pluto eliminerà anche quella variabile dal suo namespace. Inoltre, eventuali celle di codice dipendenti mostreranno un messaggio di errore per indicare che la variabile necessaria è stata eliminata.

Interattivo

La reattività genera interattività automatica tra le celle. Questo è particolarmente utile per creare rapidamente grafici o oggetti interattivi che si aggiornano automaticamente quando cambia una variabile. 

La cosa bella di Pluto è che quella variabile può essere un widget interattivo nel notebook, come uno slider integrato o una casella di testo. Se conosci Javascript, puoi persino progettare i tuoi widget.

Reattività e interattività ti permettono di produrre report e dashboard dinamici basati sui tuoi modelli di machine learning e sulle tue analisi dei dati. La chiave di un progetto di machine learning di successo è la comunicazione e Pluto rende molto più semplice mostrare e spiegare il tuo progetto.

Gestione automatica dei pacchetti

Pluto si integra perfettamente con Pkg per consentire la gestione automatica dei pacchetti nei tuoi notebook. Non solo: non devi nemmeno installare i pacchetti al di fuori di Pluto. Tutte le informazioni di cui Pluto (e Julia) ha bisogno per eseguire e riprodurre il tuo notebook sono memorizzate direttamente nel notebook stesso! 

Questo significa che puoi condividere il tuo notebook con colleghi o compagni di corso, ed essere sicuro che tutti i pacchetti necessari all'esecuzione del notebook lo accompagneranno.

Controllo di versione

Tutti i notebook Pluto sono salvati come file .jl eseguibili. Se apri un notebook in un editor di testo, apparirà un po' diverso da quello che vedi nel browser. Il file conterrà tutte le informazioni necessarie al notebook, come il codice, le dipendenze tra le celle e l'ordine di esecuzione. Tuttavia, questi file non contengono alcun output. Tutto ciò rende molto più semplice il controllo di versione con Git e GitHub.

Esportazione e condivisione

I notebook Pluto possono essere esportati come file .jl eseguibile, PDF statico o file HTML statico. Se esporti in HTML, la persona con cui lo condividi avrà anche l'opzione di scaricare e modificare il file grezzo del notebook senza avere Julia installata sulla propria macchina. 

Pluto raggiunge questo risultato collaborando con Binder, una piattaforma gratuita che ospita online i notebook Pluto (funziona anche con altri linguaggi, come Python e R).

Questa funzionalità rappresenta l'ultimo passo del flusso di lavoro del machine learning: prima conduci le tue analisi, poi costruisci nel notebook un report interattivo per mostrarne i risultati e infine condividi il notebook sia con i colleghi tecnici, in grado di riprodurre e modificare l'analisi, sia con chi non è tecnico.

Risorse per imparare Julia

Ecco alcune delle risorse più consigliate per imparare il linguaggio di programmazione Julia e come usarlo in data science e machine learning:

Inizia a imparare Julia oggi

Segui il nostro corso Introduzione a Julia

Inizia
Argomenti
Julia
Analisi dei dati
Machine Learning
Correlato

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra AltroMostra Altro