Disambiguazione – Se stai cercando l'uccello neozelandese, vedi Gallirallus australis.

Weka, acronimo di "Waikato Environment for Knowledge Analysis", è un software per l'apprendimento automatico sviluppato nell'università di Waikato in Nuova Zelanda. È open source e viene distribuito con licenza GNU General Public License. Curiosamente la sigla corrisponde al nome di un simpatico animale simile al Kiwi (vedi foto), presente solo nelle isole della Nuova Zelanda.

WEKA
software
Logo
Logo
Schermata di esempio
Schermata di esempio
GenereAnalisi dei dati
Apprendimento automatico (non in lista)
SviluppatoreUniversity of Waikato (NZ)
Ultima versione3.6.10 (25 gennaio 2013)
Ultima beta3.7.10 (21 febbraio 2013)
Sistema operativoMultipiattaforma
LinguaggioJava
LicenzaGNU General Public License
(licenza libera)
Sito webwww.cs.waikato.ac.nz/ml/weka/
L'interfaccia grafica che compare all'avvio di WEKA

Caratteristiche modifica

Weka è un ambiente software interamente scritto in Java. Un semplice metodo per utilizzare questo software consiste nell'applicare dei metodi di apprendimento automatici (learning methods) ad un set di dati (dataset), e analizzarne il risultato. È possibile attraverso questi metodi, avere quindi una previsione dei nuovi comportamenti dei dati.

L'interfaccia grafica di Weka è composta da:

  • Simple CLI: l'interfaccia dalla riga di comando;
  • Explorer: ambiente che consente di esplorare i dati attraverso i comandi Weka:
    • Preprocess permette di caricare i dati da una base dati o da un CSV e di applicare dei filtri ai dati;
    • Classify applica algoritmi di classificazione e regressione;
    • Cluster permette di usare tecniche di clustering;
    • Associate cerca di estrarre delle Regole di associazione;
    • Select attributes esegue degli algoritmi che permettono di valutare gli attributi in base alla loro utilità per la classificazione;
    • Visualize visualizza un Grafico di dispersione;
  • Experimenter: compie test statistici fra i diversi algoritmi di data mining;
  • Knowledge Flow.
 
WEKA Explorer

Il dataset modifica

Insieme di valori e attributi presenti all'interno di una relazione. In una tabella di un database relazionale le istanze corrispondono alle righe e gli attributi alle colonne. Il formato utilizzato in Weka per la lettura dei dataset è l'ARFF(Attribute Relationship File Format), è simile al più famoso CSV (Comma-separated values) ed è equivalente alla tabella di un database relazionale.

La matrice di confusione modifica

  Lo stesso argomento in dettaglio: Matrice di confusione.

Vengono utilizzate per la valutazione dei classificatori utilizzati in Weka.

Confusion Matrix
a b classified as
7 2 a = yes
3 2 b = no

Le colonne della matrice rappresentano le istanze che sono state classificate come appartenenti a quella classe. Nell'esempio la prima colonna mostra che in totale sono state classificate 10 istanze “a” da Weka, e 4 sono state classificate come “b”.
Le righe della matrice di confusione rappresentano le reali istanze che appartengono a quella classe. Attraverso questo meccanismo la matrice è in grado di fornire il numero di casi che sono stati classificati correttamente e il numero di casi classificati in modo scorretto.

Utilizzo all'interno di codice Java modifica

Oltre ad utilizzare WEKA da interfaccia grafica, è anche possibile usarlo all'interno di programmi scritti in Java.

Un esempio di training incrementale è il seguente[1]:

 // carica di dati dal file di tipo ARFF
 ArffLoader loader = new ArffLoader();
 loader.setFile(new File("/some/where/data.arff"));
 Instances structure = loader.getStructure();
 
 // usa i dati caricati per allenare il clusterer Cobweb
 Cobweb cw = new Cobweb();
 cw.buildClusterer(structure);
 Instance current;
 while ((current = loader.getNextInstance(structure)) != null)
   cw.updateClusterer(current);
 cw.updateFinished();

È possibile anche eseguire l'allenamento in modalità batch, ovvero su tutte le istanze insieme:

 import weka.core.Instances;
 import java.io.BufferedReader;
 import java.io.FileReader;
 import weka.clusterers.EM;
 ...
 BufferedReader reader = new BufferedReader(
                              new FileReader("/some/where/data.arff"));
 Instances data = new Instances(reader);
 reader.close();
 String[] options = new String[2];
 options[0] = "-I";                 // numero massimo di interazioni
 options[1] = "100";
 EM clusterer = new EM();   // crea una nuova istanza del clusterer
 clusterer.setOptions(options);     // imposta le opzioni 
 clusterer.buildClusterer(data);    // costruisci il clusterer

Note modifica

  1. ^ Use WEKA in your Java code, su weka.wikispaces.com. URL consultato il 2 gennaio 2014.

Altri progetti modifica

Collegamenti esterni modifica