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