Weka

Da Wikipedia, l'enciclopedia libera.
bussola Disambiguazione – Se stai cercando l'uccello neozelandese, vedi Gallirallus australis.
WEKA
Weka-3.5.5.png
Sviluppatore University of Waikato (NZ)
Ultima versione 3.6.10 (25 gennaio 2013)
Ultima beta 3.7.10 (21 febbraio 2013)
Sistema operativo Multipiattaforma
Linguaggio Java
Genere Analisi dei dati
Licenza GNU General Public License
(Licenza libera)
Sito web www.cs.waikato.ac.nz/ml/weka/
L'interfaccia grafica che compare all'avvio di WEKA

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 rilasciato 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.

Caratteristiche[modifica | modifica wikitesto]

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 | modifica wikitesto]

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 | modifica wikitesto]

Exquisite-kfind.png Per approfondire, vedi 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 | modifica wikitesto]

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 | modifica wikitesto]

  1. ^ Use WEKA in your Java code. URL consultato il 2 gennaio 2014.

Altri progetti[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]