Analisi dei dati ed estrazione della conoscenza

CLEI/S. 6 CFU.

A.A. 2008/2009

prova pratica del 7 Luglio 2009


Modalità di svolgimento

La prova pratica è strettamente individuale. Qualora venissero consegnati degli elaborati simili, più di quanto è lecito attendersi da soluzioni indipendenti allo stesso problema, gli stessi verrebbero annullati. Non saranno ammesse motivazioni del tipo "abbiamo già provato a risolvere un esercizio simile, per questo i nostri compiti sono uguali". Se davvero avete scritto del codice R che risolve un esercizio simile, e lo volete utilizzare come base di partenza per questo, siete liberissimi di farlo, purché consegniate entro 15 minuti dall'inizio dell'esame il suddetto codice al docente.

Per la consegna dell'elaborato, utilizzare il modulo web disponibile al sito di sottomissione on-line. L'invio del file deve avvenire entro le ore 16:00, secondo l'orario indicato nel sito stesso.

Testo del compito

Il compito consiste di due esercizi. Il voto massimo che si può ottenere risolvendo correttamente il primo esercizio è 24, mentre il voto massimo per una corretta soluzione del secondo esercizio è 30 e lode. Consiglio vivamente a tutti di risolvere prima l'esercizio n. 1 e solo successivamente passare al numero 2.

  1. Si applichi il metodo di raggruppamento kmeans (con k=3) al dataset iris, privato dell'attributo classe. Trovare la corrispondenza migliore tra i gruppi individuati da k-means e le classi dell'insieme di dati originale. Tenendo conto di questa corrispondenza, calcolare il numero di istanze per cui il gruppo individuato da k-means non è corretto.
  2. Scrivere una funzione kmeans.errors che prende un unico argomento data di tipo data frame. data è composto esclusivamente da attributi numerici tranne l'ultimo attributo che è categoriale e va considerato l'attributo classe. Su questo data frame, la funzione kmeans.errors deve agire come operato manualmente nell'esercizio precedente, ovvero: applicare k-means (con k pari al numero di classi diverse che appaiono in data), individuare la migliore corrispondenza tra i gruppi e le classi, calcolare il numero di istanze per cui tale abbinamento da dei risultati scorretti.

    Si può provare il corretto funzionamento di kmeans.errors, oltre che sul data set iris anche sul dataset generato dal comando

          data.frame(x=c(rnorm(10,0,0.5),rnorm(15,1,0.5)), y= c(rnorm(10,0,0.5),rnorm(15,1,0.5)), type=c(rep("type1",10),rep("type2",15)))
          

    che è un mistura di due distribuzioni gaussiane con centri (0,0) e (1,1) rispettivamente.

    Per il corretto svolgimento dell'esercizio, possono essere utili le funzioni levels e which.max.