Interessato a capire come funziona il Machine Learning da un punto di vista pratico?
Vediamo lo script minimale, l’Hello World che ti permetterà di partire e intraprendere un percorso che ti porterà alla costruzione della IA che conquisterà il mondo.
Per partire ti serve il mitico linguaggio python e la libreria open source scikit-learn.
Segue un video tutorial e il dettaglio delle fasi coinvolte con gli snippet di codice. Prova a implementare lo script con calma senza fare copia-incolla.
Le fasi da seguire sono queste:
- Caricare i dati: il Machine Learning supervisionato viene fatto a partire da un tabellone di dati dove ogni riga contiene un esempio. Ogni esempio è dato dalle features, ossia le informazioni di input aka variabili indipendenti, e dal target, ossia l’output desiderato aka variabile dipendente.
iris_dataset = datasets.load_iris() print iris_dataset['DESCR'] X = iris_dataset.data y = iris_dataset.target
- Elaborare le features: Scalare le features, aggiungerne di nuove, gestire i valori mancanti. Questo è il cuore del Machine Learning, dove entra in gioco la creatività e l’esperienza. La chiave per ottenere buoni risultati è partire da tanti dati di buona qualità, ma spesso i dati sono pochi e/o sporchi. Nel nostro Hello World vogliamo capire la struttura generale di un progetto e lasciamo questa parte per la prossima volta.
- Separare train e test: I dati vanno separati in (almeno) 2 tronconi, uno sarà usato per l’addestramento del modello e l’altro per testare il modello su dati che non sono stati usati durante l’addestramento. Questa procedura di validazione ci permette di capire se il modello ha effettivamente generalizzato i dati e trovato dei pattern utili o se ha semplicemente imparato gli esempi a memoria.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4)
- Costruire il modello: tutte le librerie di machine/deep learning più importanti sono a oggetti e seguono una API molto simile. Si instanzia una classe che prende il nome di un algoritmo di addestramento, l’istanza della classe è il modello (inizialmente non addestrato). Tutte le classi mettono a disposizione i metodi per addestrare e testare il modello, tramite i metodi
fit
epredict
.model = DecisionTreeClassifier()
- Addestrare il modello: istanziato il modello chiamiamo il metodo
fit
e gli passiamo i dati di training, già separati tra le featureX_train
e le risposte desideratey_train
.model.fit(X_train, y_train)
- Ottenere le predizioni: dopo l’apprendimento il modello viene interrogato passandogli solo le features e raccogliendo le sue risposte. Lo facciamo sia per i dati di training che per quelli di test, chiamando i risultati rispettivamente
predicted_train
epredicted_test
.predicted_train = model.predict(X_train) predicted_test = model.predict(X_test)
- Misurare le prestazioni: le prestazioni sono misurate confrontando le risposte desiderate, cioè quelle che avevamo nei dati, con le risposte offerte dal modello. Si utilizzano misure diverse a seconda se il modello sia un classificatore (output a categorie) o un regressore (output numerico), ma in tutti i casi le misure prendono in input risposte desiderate e risposte predette. Misuriamo l’accuratezza sia sui dati di training che sui dati di test.
print('Train accuracy') print( accuracy_score(y_train, predicted_train) ) print('Test accuracy') print( accuracy_score(y_test, predicted_test) )
- Analisi dell’errore: In questo esempio hello world non entriamo nel merito di come si approfondiscono gli errori del modello e come si visualizzano e riparano. Nella pratica del machine learning dopo aver indagato sugli errori si ritorna al punto 2 e si va avanti fino all’ottenimento di prestazioni decenti.
Questo era il tuo primo script di Machine Learning in python. Da qui ci sono diverse cose che puoi fare:
- leggere gli altri articoli sul tema che trovi qui su ItalianCoders
- guardare i video del Pollo Watzlawick su Youtube
- in generale, ti conviene scegliere un dataset su un argomento di interesse e sperimentare su quello. Fare grafici esplorativi, statistiche descrittive e modelli di machine learning è più semplice se i dati che maneggi nascondono risposte alla tua curiosità.