Sessió de Laboratori 28/10/2005
Preprocés de dades
A
la sessió del
14/10 vam veure que no podiem executar algun algorisme
perquè les dades contenien valors perduts. També
hem vist a classe com el tractament d'aquests tipus de valors
és una de les moltes tasques de preprocés que es
poden o s'han de portar a terme abans de construir un model.
En
aquesta sessió treballarem amb el conjunt de dades soybean.arff
on pràcticament tots els atributs contenen valors perduts.
Aplicarem vàries solucions i a més veurem un exemple de
resoldre tasques de preprocés utilitzant tant eines ja existents
com scripts fets per nosaltres mateixos.
Substituir els valors perduts
- Obre l'Explorer i carrega
les dades.
- Ves
a Filter i fes clic a Choose per seleccionar
unsupervised/attribute/ReplaceMissingValues
que és un filtre
que substitueix els valors perduts per la mitjana o la moda.
Eliminar les instàncies amb
valors perduts
Obre el fitxer
soybean.arff
en un editor de text i elimina tot menys les linies corresponents a les
instàncies (fixa't també si al final del fitxer
hi ha algun comentari per eliminar-lo) i guarda el resultat com a
soybean.txt.
Executa
la comanda següent:
awk
'BEGIN{FS=","}{n=0;for (i=1;i<=NF;i++) if (match("?",$i)) n++; if
(n>0) printf("%d : %d\n", NR, n)}' soybean.txt
Això et donarà una llista de quines instàncies
tenen valors perduts i quants (no ho farem però això es
podria guardar i visualitzar si fós necessari). Modificant
la comanda com segueix
awk
'BEGIN{FS=","}{n=0;for (i=1;i<=NF;i++) if (match("?",$i)) n++; if
(n==0) print $0}' soybean.txt
pots llistar només les instàncies sense cap valor
perdut.
Redirecciona la comanda anterior cap a un fitxer nou, i utilitzant les
definicions d'atributs del fitxer .arff original construeix un nou
conjunt de dades que només contingui aquestes instàncies
sense valors perduts.
Proves
Amb el conjunt original i els dos conjunts que has construit, prova els
algorismes ID3, NaiveBayesSimple i J48 utilitzant l'Experimenter i
repetint 5 vegades una 10-fold cross-validation. Intenta treure alguna
conclusió sobre quin dels preprocessos (o cap) dóna
millor resultat.