Cvičenie 8 - Predspracovanie dát v prostredí Apache Spark

Cieľom ôsmeho cvičenia je naučiť sa predspracovať dáta do vhodnej reprezentácie tak, aby mohli byť použité ako trénovacie, alebo testovacie dáta pri učení modelov.

Dátové rámce

Dátové rámce (Data Frames) sú distribuovanou kolekciou dát, ktoré sú usporiadané do pomenovaných stĺpcov. Dátové rámce v Sparku môžu byť vytvorené z rôznych zdrojov napr. zo súborov, externých databáz, alebo transformovaním z existujúcich RDD kolekcií. Základným rozhraním pre prácu nad dátovými rámcami je objekt SparkSession, ktorý umožňuje aj dopytovanie pomocou jazyka SQL. V prostredí interpretra PySpark je objekt SparkSession dostupný priamo v premennej spark. V skripte je potrebné ho inicializovať a zadať aspoň názov aplikácie.

V nasledujúcom príklade aplikujeme operácie nad dátovým rámcom vytvoreným z reálnej dátovej množiny KDD Cup.

Viac informácií o dátových rámcoch môžete nájsť na nasledujúcej stránke (v angličtine).

Úlohy

Úloha 8.1

Napíšte funkciu, ktorá umožní vypočítať popisné charakteristiky pre ľubovoľnú triedu špecifikovanú ako parameter. Tzn. napíšte funkciu label_summary(df, label), aby ste vedeli vypočítať štatistiky pre ľubovoľnú špecifikovanú triedu (napr. pre triedu normal. takto normal_stats = label_summary(df, "normal.")).

Úloha 8.2

Naštudujte si dokumentáciu k Bucketizer z MLlib, ktorý sa používa na transformáciu numerických (spojitých) atribútov na kategorické (nominálne). Numerické hodnoty zvoleného atribútu rozdelí do intervalov (buckets), ktorým priradí kategorické hodnoty. Zvoľte si ľubovoľný numerický atribút z datasetu z cvičenia a transformujte ho použitím Bucketizeru na nominálny. Pokúste sa rozumne zvoliť

Úloha 8.3

Naštudujte si dokumentáciu k StandardScaler. StandardScaler sa používa pre normalizáciu hodnôt zvoleného numerického atribútu. Vyberte si ľubovoľný numerický atribút z datasetu z cvičenia a normalizujte ho pomocou StandardScaleru.

Úloha 8.4

Naštudujte si dokumentáciu k OneHotEncoder a StringIndexer. Obe sa používajú na indexovanie kategorických (nominálnych) atribútu, tzn. na ich transformáciu na číselné hodnoty. Okrem potreby transformácie niektorých atribútov je indexovanie potrebné pre treénovanie modelov strojového učenia (ktoré musia pracovať s numerickými vektormi). Použite obe metódy na vybraný kategorický atribút z datasetu z cvičnia. Porovnajte výsledky indexovania zvoleného atribútu oboma spôsobmi.