Prof. Claudio Sartori

Data mining


Informativa Privacy

Esercitazione

Data pre-processing in Weka

Questo esempio illustra alcune delle operazioni base di pre-trattamento dei dati che possono essere eseguite con Weka. I dati di esempio usati sono, salvo diversa indicazione, i dati bancari presenti in questo file csv.

I dati contengono i seguenti attributi

id identificatore unico
age età del cliente in anni (numeric)
sex MALE / FEMALE
region inner_city/rural/suburban/town
income reddito del cliente (numeric)
married sposato? (YES/NO)
children numero di figli (numeric)
car possiede un'automobile? (YES/NO)
save_acct ha un conto di risparmio? (YES/NO)
current_acct ha un conto corrente? (YES/NO)
mortgage ha un mutuo (YES/NO)
pep ha acquistato un PEP (Personal Equity Plan) dopo l'ultimo invio postale? (YES/NO)

Caricamento dei dati

Oltre al formato di file nativo ARFF, Weka è in grado di leggere il formato ".csv". Quest'ultimo è facilmente esportabile da qualunque applicazione database o foglio elettronico. La prima riga contiene i nomi degli attributi (separati da virgole), seguono le righe dati, con i valori ancora separati da virgole. Una volta caricati in Weka, i dati possono essere salvati in formato ARFF.

In questo esempio, i dati verranno caricati in Weka e si effettueranno trasformazioni, in particolare discretizzazioni.

Il file viene caricato dal tab "Preprocess", come mostrato in Figura p1.

Poiché i dati non sono in formato ARFF, una box di dialogo chiederà di utilizzare il convertitore, come in Figura p2. Con OK si aprirà il dialogo di Figura p3.

Una volta caricati i dati, Weka riconoscerà gli attributi e calcolerà alcune statistiche elementari. Il pannello di sinistra in Figura p4 mostra la lista degli attributi riconosciuti, mentre il pannello in alto mostra i nomi della tabella e dell'attuale relazione di lavoro (inizialmente identici).

Un click su uno degli attributi mostrerà le statistiche per quell'attributo. Per gli attributi categorici, si mostra la frequenza di ciascun valore, mentre per quelli continui si mostrano massimo, minimo, media, deviazione standard, ecc. Si vedano ad esempio le Figura p5 e Figura p6 per le metriche di "age" e "married" rispettivamente.

La visualizzazione nel pannello in basso a destra è una forma di tabulazione incrociata di due attributi. Ad esempio, nella Figura p6 sopra citata si visualizzano "married" e "pep", infatti, per default, l'incrocio viene effettuato con l'ultimo attributo della lista.

Selezione o filtraggio degli attributi

Nel nostro file dati, ogni record è identificato univocamente ("id"). Questo attributo è inutile per il data mining e va rimosso, utilizzando i filtri di Weka. Nel pannello dei filtri attivare il bottone "Choose" e scegliere, fra i filtri disponibili, "weka.filters.unsupervised.attribute.Remove", come in Figura p7.

Inserire quindi l'indice dell'attributo da rimuovere (in questo caso è 1) e controllare che l'opzione "invertSelection" sia falsa (diversamente sarebbero rimossi tutti gli attributi tranne il primo). Selezionare "OK" ( Figura p8 ) e verrà mostrato nella box dei filtri "Remove -R 1" ( Figura p9 ).

Il bottone "Apply" comanda l'applicazione del filtro ai dati, rimuovendo l'attributo "id" e modificando il nome della relazione per tenere conto del filtro applicato, come mostrato in Figura p10.

Prima di applicare altri filtri, a titolo di esempio effettueremo un salvataggio intermedio dei dati e tratteremo ogni passo come una sessione separata. Attivare il bottone "Save" e specificare il nome del nuovo file dati "bank-data-R1.arff" (Figura p11). La Figura p12 mostra il nuovo file in TextPad. Si noti che Weka ha individuato correttamente i tipi degli attributi, specificati nella parte iniziale del file ARFF.

Discretizzazione

Alcune tecniche di mining, e fra queste la scoperta di regole associative, richiedono di operare con dati categorici, quindi i dati numerici o continui devono essere discretizzati. Questo vale per "age", "income" e "children". Tuttavia, "children" ha un numero di valori possibili limitato (0, 1, 2 e 3) e può essere conservato in questa forma, semplicemente cambiando il tipo di dato, ovvero sostituendo (con l'editor di testi) la parola chiave "numeric" di fianco a "@attribute children" con la lista dei valori ammessi "{0, 1, 2, 3}" e salviamo "bank-data2.arff", come mostrato in Figura p13.

Quindi carichiamo "bank-data2.arff" (Figura p14) e verifichiamo il riconoscimento di "children" con il tipo categorico ( Figura p15 ).

Ora scegliamo il filtro di discretizzazione "weka.filters.unsupervised.attribute.Discretize" ( Figura p16 ) e attiviamo con un click l'area a destra del bottone "Choose" per modificare i parametri del filtro. Inseriamo l'indice dell'attributo da discretizzare (1 per "age") e il numero di "bin" per la discretizzazione (3). Lasciamo a falso tutte le altre opzioni, eseguendo una discretizzazione elementare ( Figura p17 ).

Premere il tasto "Apply" nel pannello Filter. Verrà generata una nuova relazione di lavoro con l'attributo partizionato in tre "bin".(Figura p18). Per esaminare il risultato salviamo la nuova relazione di lavoro nel file "bank-data3.arff" ( Figura p19).

Esaminiamo i nuovi dati con un editor di testi. Weka ha assegnato etichette calcolate automaticamente a ogni intervallo dell'attributo discretizzato. Per esempio, l'intervallo più basso in "age" ha le etichette "(-inf-34.333333]", "(34.333333-50.666667]", e così via. Ora le etichette sono riportate nei record dati.

Applicheremo lo stesso processo per la discretizzazione di "income" in tre bin. Salviamo il nuovo file in "bank-data3.arff", sostituendo la versione precedente.

Possiamo ora migliorare la leggibilità dei dati, senza modificare il significato, modificando le etichette con un editor di testi, ad esempio sostituendo "inf-34.333333" con "0_34". Il risultato è mostrato in Figura p21. La semplificazione finale è mostrata in Figura p22. La relazione ottenuta può essere salvata in "bank-data-final.arff".

Per qualsiasi problema su questa pagina contattare il webmaster.