Łańcuchy znaków i zmienne kategoryczne
Jak wiesz, Spark do modelowania wymaga danych numerycznych. Do tej pory nie stanowiło to problemu – nawet kolumny boolowskie można bez trudu przekonwertować na liczby całkowite. W swoim modelu będziesz jednak używać także linii lotniczej i miejsca docelowego samolotu jako cech. Są one zapisane jako łańcuchy znaków i nie ma oczywistego sposobu, żeby przekształcić je na typ numeryczny.
Na szczęście PySpark ma wbudowane funkcje do obsługi tego rodzaju danych w submodule pyspark.ml.features. Możesz tworzyć tak zwane „wektory one-hot", które reprezentują przewoźnika i miejsce docelowe każdego lotu. Wektor one-hot to sposób reprezentowania cechy kategorycznej, w którym każda obserwacja ma wektor, gdzie wszystkie elementy są zerowe – z wyjątkiem co najwyżej jednego, który przyjmuje wartość jeden (1).
Każdy element wektora odpowiada jednej wartości cechy, dzięki czemu można odczytać właściwą wartość, sprawdzając, który element wektora jest równy jeden (1).
Pierwszy krok kodowania cechy kategorycznej to utworzenie obiektu StringIndexer. Elementy tej klasy są Estimatorami – przyjmują DataFrame z kolumną łańcuchów znaków i przypisują każdemu unikalnemu łańcuchowi znaków liczbę. Następnie Estimator zwraca Transformer, który przyjmuje DataFrame, dołącza do niego to mapowanie jako metadane i zwraca nowy DataFrame z kolumną numeryczną odpowiadającą kolumnie łańcuchów znaków.
Drugi krok to zakodowanie tej kolumny numerycznej jako wektora one-hot przy użyciu OneHotEncoder. Działa to dokładnie tak samo jak StringIndexer – najpierw tworzony jest Estimator, a potem Transformer. Efektem końcowym jest kolumna, która koduje cechę kategoryczną jako wektor odpowiedni dla algorytmów uczenia maszynowego!
Może to brzmieć skomplikowanie, ale nie martw się! Wystarczy, że pamiętasz o konieczności utworzenia StringIndexer i OneHotEncoder – resztą zajmie się Pipeline.
Dlaczego cechę kategoryczną należy kodować jako wektor one-hot?
To ćwiczenie jest częścią kursu
Podstawy PySpark
Interaktywne ćwiczenie praktyczne
Przekształć teorię w praktykę dzięki jednemu z naszych interaktywnych ćwiczeń
Rozpocznij ćwiczenie