Șiruri de caractere și factori
Așa cum știi, Spark necesită date numerice pentru modelare. Până acum, acest lucru nu a fost o problemă; chiar și coloanele de tip boolean pot fi convertite ușor la numere întregi. Însă vei folosi și compania aeriană, respectiv destinația avionului, drept caracteristici în modelul tău. Acestea sunt codificate ca șiruri de caractere și nu există o modalitate evidentă de a le converti la un tip de date numeric.
Din fericire, PySpark include funcții pentru gestionarea acestei situații, disponibile în submodulul pyspark.ml.features. Poți crea ceea ce se numesc „vectori one-hot" pentru a reprezenta compania aeriană și destinația fiecărui zbor. Un vector one-hot este o modalitate de a reprezenta o caracteristică categorică, în care fiecare observație are un vector în care toate elementele sunt zero, cu excepția a cel mult unui element care are valoarea unu (1).
Fiecare element din vector corespunde unui nivel al caracteristicii, astfel încât poți identifica nivelul corect verificând care element al vectorului este egal cu unu (1).
Primul pas pentru codificarea unei caracteristici categorice este crearea unui StringIndexer. Membrii acestei clase sunt Estimatori care preiau un DataFrame cu o coloană de șiruri de caractere și mapează fiecare șir unic la un număr. Apoi, Estimator-ul returnează un Transformer care preia un DataFrame, atașează maparea ca metadate și returnează un nou DataFrame cu o coloană numerică corespunzătoare coloanei de șiruri.
Al doilea pas este codificarea acestei coloane numerice ca vector one-hot, folosind un OneHotEncoder. Acesta funcționează exact la fel ca StringIndexer-ul, creând mai întâi un Estimator și apoi un Transformer. Rezultatul final este o coloană care codifică caracteristica ta categorică sub forma unui vector potrivit pentru rutinele de învățare automată!
Poate părea complicat, dar nu-ți face griji! Tot ce trebuie să reții este că ai nevoie să creezi un StringIndexer și un OneHotEncoder – Pipeline-ul se va ocupa de restul.
De ce trebuie să codifici o caracteristică categorică ca vector one-hot?
Acest exercițiu face parte din cursul
Fundamente PySpark
Exercițiu interactiv practic
Transformă teoria în practică cu unul dintre exercițiile noastre interactive
Începe exercițiul