Adatbányászati technikák 1. labor

Katona Gyula (kiskat@cs.bme.hu), Tóth Ágnes (tothagi@cs.bme.hu)

Február 17.,  csütörtök 8:15-9:45, R4M labor


Órai feladatok: adatfileok feldolgozása (linux alapismeretek, AWK)

  1. Indítsuk el az xservert: XWin Server (az asztalon).
  2. A megjelenő terminál ablakban beállíthatunk különféle dolgokat. Például a VT Options-ban bállíthatjuk: Enable Scrollbar.
  3. Az első, általunk tanult parancs a man, amellyel Linux parancsok ,,használati útmutatóit" jeleníthetjük meg.
    Olvassuk el a cd parancs leírását (man cd)! A leírás alapján mire való a cd parancs?
  4. Adjuk ki a cd /cygdrive/c/user/ utasítást!
  5. Töltsük le az arlista-tab.txt, bank-data.csv, contact-lenses.arff és uniq.txt fileokat a C:/USER könyvtárba.
  6. Nyissuk meg a uniq.txt filet az nedit uniq.txt & paranccsal!
  7. Mire való az ls parancs? Mit csinál az ls -l parancs? Mit csinál az ls -lt parancs? Mit csinál az ls -l *.txt parancs?
  8. Másolás: cp, átnevezés: mv,  törlés: rm, alkönyvtár létrehozása: mkdir, alkönyvtár törlése: rmdir.
  9. Szöveg kiírása a standard outputra: cat file.
    Szöveg kiírása a standard outputra lapozhatóan: less file.
    Próbáljuk ki: less uniq.txt. Lapozás: Enter, Space, fel-le nyilak, f, b. Kilépés: q.
  10. Karakter, szó és sorszámlálás: wc. Tanulmányozzuk a lehetőségeket!
  11. Keresés: grep
    Pl: Mely fileok, mely sorában szerepel a yes szó: grep yes *
  12. A standard kimenet átirányítása:>
    Az ls -l >tartalom.txt parancs a tartalom.txt fileba teszi a kimenetet. Próbáljuk ki és ellenőrizzük, hogy tényleg az került-e bele!
  13. Csővezetékes átirányítás: |
    Az ls | wc -w parancs megszámolja, hogy az ls kimenetében hány szó van.
    Hányszor szerepel a contact-lenses.arff fileban a yes szó?
  14. További parancsok: cut, uniq, sort, tr
  15. Tab szeparált file "," szeparált fileba alakítása: tr '\t' ',' < input > output
    Próbáljuk ki a uniq.txt állománnyal!
  16. Hajtsuk végre az alábbi parancsokat a uniq.txt fileon, és fogalmazzuk meg, hogy az egyes parancssorozatok
    milyen műveleteket végeznek!
    cut -f1 <adatfile>
    cut -f1 <adatfile> | sort
    cut -f1 <adatfile> | sort -n | uniq
    cut -f1 <adatfile> | sort -n | uniq | wc -l
  17. Az előző feladatban megismert cut parancs használatával vágjuk ki a uniq.txt file második oszlopa negyedik szavának első három karakterét!
  18. A grep parancs használatával keressük meg a uniq.txt fileban azokat a sorokat, amelyek tartalmazzák a ,,szor" mintát!
    Szűrjük a kimenetet úgy, hogy az egymást követő azonos sorok csak egyszer szerepeljenek!
    Szűrjük a kimenetet úgy, hogy az azonos sorok csak egyszer szerepeljenek!
    Ha meggyőződtünk róla, hogy a kívánt kimenetet kaptuk, irányítsuk át a kimenetet egy tetszőleges file-ba!
  19. Tekintsük át az eddig beírt parancsainkat a fel/le nyilak használatával! Mi történik, ha egy félig beírt parancs vagy filenév után leütjük a TAB billentyűt?
  20. Manuáljuk segítségével tekintsük át a következő parancsokat is: paste, join, sed.
  21. Az AWK program bemutatása.
  22. Adott szót tartalmazó sorok:
    awk '/RURAL/' bank-data.csv
  23. Beépített változó az oszlop elválasztó karakter: FS és az aktuális sor sorszáma: NR
  24. Oszlopok mint változók: $1,$2,... az egész sor: $0
  25. Csak a 3,4,5 oszlopot irja ki:
    awk 'BEGIN {FS=","} /RURAL/ {print $3,$4,$5}' bank-data.csv
  26. 45 évnél fiatalabbak listázása:
    awk 'BEGIN {FS=","} {if ($2 < 45) print $2," ",$3,$4,$5}' bank-data.csv
  27. Írjuk ki a bank-data.csv file sorait sorszámozva!
  28. Egy Awk program általános formája:
    awk 'BEGIN {<initializations>}
    <search pattern 1> {<program actions>}
    <search pattern 2> {<program actions>}
    ...
    END {<final actions>}'
  29. Példák:
    Sorok száma:
    awk 'END {print NR,"sor"}' uniq.txt
    (Ugyanaz, mint a wc -l uniq.txt)
  30. Átlag életkor:
    awk 'BEGIN{FS=","} {s+=$2} END{print s/NR}' bank-data.csv
  31. Nyissunk meg egy új filet az editorban: nedit atlag.awk &
    Írjuk bele az előző sorban az idézőjelek között levő parancsokat (lehet új sorba a különböző részeket).
    Adjuk ki a következő parancsot: awk -f atlag.awk bank-data.csv
  32. Számítsuk ki a nők átlagéletkorát!
  33. Az arlista-tab.txt filben melyik termékkategóriából hány szerepel:
    awk '{v[$1]++} END{for (i in v) print i,v[i]}' arlista-tab.txt
  34. Számítsuk ki az átlagárat termékkategóriánként!
  35. Készítsünk egy új táblázatot, melyben a termék neve mellett a brutto webes ár, az ÁFA (25%) és a netto ár szerepel!

Kiegészítő feladat: adattisztítás

  1. Írjunk egy programot (tetszőleges programozási nyelven), mely a bemenetként kapott esetlegesen elgépelt magyar városneveket megpróbálja helyesen írt szóvá visszaalakítani:
  2. Szükségünk lesz egy referencia listára, mely a magyar városneveket tartalmazza. Az itt található forrás segítségével készítsünk egy fájlt, mely soronként tartalmazza a helyesen írt városneveket!
  3. Először próbáljunk ki egy nagyon egyszerű eljárást: válasszuk azt a városnevet a referencia listából, mely a legtöbb karakterben egyezik meg a visszaalakítandó szóval.
    Mikor jó ez a módszer, és mikor nem?
  4. Valósítsunk meg egy bonyolultabb algoritmust is, mely a leghosszabb közös részsorozat hosszát számolja a kapott szó és a referencia lista eleme között: LCS.
    Hasonlítsuk össze az előbbi két módszert!
  5. További lehetőség a szerkesztési távolság meghatározása: Levenshtein távolság.