top of page
Federico Magliani

Applicazione SVM per la classificazione automatica su Iris dataset - Esempi pratici Machine Learning

Conoscenze necessarie per leggere questo post.

Se vuoi trovarti a tuo con questa lettura, ti consiglio di leggerti prima i seguenti articoli introduttivi:



Ricapitolando

Ho introdotto nei precedenti post le nozioni necessarie per valutare un primo caso di studio. Nello specifico analizzerò il problema di classificazione dei fiori fra Iris Setosa, Virginica e Versicolor. Come già accennato, il dataset è composto da 150 istanze. Per ognuna di esse vengono fornite più features utili per la classificazione: lunghezza, larghezza del sepalo e del petalo. Per maggiori info sul dataset visita il sito ufficiale.


Dataset Iris per la Classificazione
Dataset Iris per la Classificazione


Suddivisione del dataset

Ho suddiviso il dataset in train e test: l’80% delle istanze le ho inserite nel training set e il rimanente 20% le ho inserite nel test set. Ho deciso di utilizzare l’algoritmo presentato nel post precedente ovvero SVM, il quale si occuperà di definire una funzione che permetta di dividere correttamente le istanze delle classi.



Come fa a farlo?

Tramite i dati di training etichettati. Ovviamente all’aumentare dei dati a disposizione le performance saranno migliori. Inoltre, all’aumentare delle classi le performance saranno peggiori perché aumenterà la probabilità di sbagliare la classificazione.


Figura 1: Figura 1 - Esempi di Iris Setosa, Virginica e Versicolor.

Risultati

L’accuratezza di classificazione ottenuta è stata pari a 83.33%. Questa metrica misura la percentuale di corrette classificazioni svolte dall’algoritmo utilizzato. Nel caso in esame significa che su 30 immagini presenti nel test set 25 sono classificate correttamente, mentre 5 sono errate. Per incrementare questo valore possono essere necessari:

  1. maggiori elementi nel training set;

  2. l’utilizzo di un set diverso di features;

  3. l’adozione di una strategia più efficace per la risoluzione del problema.

La matrice di confusione mostra in forma tabellare la suddivisione delle classificazioni per classe. Aiuta quindi il data scientist a capire in quali classi l’algoritmo commette errori di classificazione.


La matrice di confusione risultante è stata la seguente:


La matrice di confusione
La matrice di confusione

Da questa tabella si evince che per la classe Iris Setosa il metodo usato non commette nessun errore di classificazione (10 classificazioni su 10 corrette → 100%). Per quanto riguarda la classe Iris Virginica vengono commessi 4 errori perché 4 istanze della classe Iris Virginica vengono classificate come Iris Versicolor (7 classificazioni su 11 corrette → 63.6%). Infine, per l’ultima classe viene commesso un solo errore di classificazione (8 classificazioni

corrette su 9 → 88.8%). Da ciò si può quindi evincere che la classe che presenta maggiori difficoltà ad essere correttamente individuata è Iris Virginica.


Un’interessante analisi è quella che si può fare su come le istanze del dataset siano suddivise in training e test set. La regola aurea è che il numero di istanze di ogni classe dovrebbe essere lo stesso. Serve per evitare problemi in fase di addestramento che si ripercuotono poi in fase di classificazione. Se il metodo di classificazione vede più esempi in fase di addestramento, ci saranno poi maggiori possibilità che classifichi gli elementi del test con

l’etichetta della classe più popolosa del training set. In questo caso le istanze

sono state suddivise in questa maniera:


Divisione dei  dati
Divisione dei dati

Dalla tabella si evince che relativamente alla classe con meno istanze in fase di training si commettono poi più errori in fase di test.


Come migliorare le performance?

Avevo utilizzato solo le prime 2 features a disposizione. Usando, invece, tutte e 4 le features ottengo risultati nettamente migliori: accuratezza di classificazione pari a 93.33%. Ciò determina che la scelta delle features può influenzare molto il risultato del modello di Intelligenza Artificiale.



Solo due errori nella classificazione dell’Iris Virginica.

Davvero niente male questo SVM!



Come Implementare l' SVM con Python su questo Dataset?

Vi lascio il codice completo, con diversi kernel SVM, e le relative aree di classificazione, scritto in Python. Buon Divertimento !







Sono appassionato di Intelligenza Artificiale e nel 2020 ho ricevuto il Ph.D. in Visione Artificiale presso l'Università degli Studi di Parma.



Se vuoi ricevere maggiori informazioni sull'articolo o sui progetti che sto svolgendo visita il mio sito web.

2 comentarios

Obtuvo 0 de 5 estrellas.
Aún no hay calificaciones

Agrega una calificación
Invitado
25 abr 2022

figo, finalmente ho capito l SVM😄😅

Me gusta

Martina Giasi
Martina Giasi
15 jun 2021

Esempio classico ma molto interessante, sopratutto per l'implementazione del svm in python con i diversi kernel. Complimenti.

Me gusta
PCR (5).gif
PCR (4).gif
PCR.gif
PCR.gif
PCR.gif
PCR.gif
PCR (5).gif
3.gif
Vediamo se riesci a cliccarmi ! Nascondo una Sorpresa... (2).png

Ciao 

🤗 Articoli consigliati dalla nostra
Intelligenza Artificiale in base ai tuoi interessi

Correlazione Alta

Correlazione Media

Correlazione Bassa

Iscriviti

VUOI DIVENTARE UN MEMBRO DI INTELLIGENZA ARTIFICIALE ITALIA GRATUITAMENTE E TRARNE I SEGUENTI BENEFICI?

Corsi Gratis

più di 150 lezioni online

Dataset Gratis

più di 150o dataset

Ebook Gratis

più di 10 libri da leggere

Editor Gratis

un editor python online

Progetti Gratis

più di 25 progetti python

App Gratis

4 servizi web con I.A.

Unisciti Ora a oltre
1.000.000
di lettori e appassionanti d'I.A.

Tutto ciò che riguarda l'intelligenza Artificiale, in unico posto, in italiano e gratis.

MEGLIO DI COSI' NON SI PUO' FARE

Dopo l'iscrizione riceverai diversi Regali

VUOI SCRIVERE ARTICOLI INSIEME A NOI.

Grazie

bottom of page