Kodowanie One-Hot
W Stanach Zjednoczonych miejsce zamieszkania decyduje o tym, do jakich szkół mogą uczęszczać dzieci. Nie dziwi więc, że wiele osób przywiązuje dużą wagę do okręgu szkolnego, w którym leży ich przyszły dom. Numery okręgów szkolnych są zapisane w kolumnie SCHOOLDISTRICTNUMBER, jednak w rzeczywistości są to wartości kategoryczne – ich sumowanie czy uśrednianie nie ma żadnego sensu. W tym ćwiczeniu przekształcimy SCHOOLDISTRICTNUMBER ze zmiennej kategorycznej w wektor numeryczny, który będzie można wykorzystać w modelu uczenia maszynowego.
To ćwiczenie jest częścią kursu
Inżynieria cech z PySpark
Instrukcje do ćwiczenia
- Utwórz transformer
StringIndexero nazwiestring_indexer, używającSCHOOLDISTRICTNUMBERjako wejścia iSchool_Indexjako wyjścia. - Zastosuj transformer
string_indexerdodfza pomocąfit()itransform(). Przekształcony DataFrame zapisz w zmiennejindexed_df. - Utwórz transformer
OneHotEncodero nazwieencoder, używającSchool_Indexjako wejścia iSchool_Vecjako wyjścia. - Zastosuj transformację do
indexed_dfza pomocątransform(). Przeanalizuj kolejne kroki transformacji, korzystając z dostarczonego kodu.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
from pyspark.ml.feature import OneHotEncoder, StringIndexer
# Map strings to numbers with string indexer
string_indexer = ____(inputCol=____, outputCol=____)
indexed_df = ____.____(df).____(df)
# Onehot encode indexed values
encoder = ____(inputCol=____, outputCol=____)
encoded_df = ____.____(indexed_df)
# Inspect the transformation steps
encoded_df[['SCHOOLDISTRICTNUMBER', 'School_Index', 'School_Vec']].show(truncate=100)