One Hot Encoding
Ve Spojených státech určuje místo bydliště, do které školy mohou děti chodit. Není divu, že mnoho lidí věnuje velkou pozornost tomu, do jakého školního obvodu jejich budoucí domov patří. Sloupec SCHOOLDISTRICTNUMBER sice obsahuje čísla, ale ve skutečnosti jde o kategorickou proměnnou – sčítání nebo průměrování těchto hodnot nedává žádný smysl. V tomto příkladu proto převedeme SCHOOLDISTRICTNUMBER z kategorické proměnné na numerický vektor, který pak využijeme v modelu strojového učení.
Toto cvičení je součástí kurzu
Feature Engineering with PySpark
Pokyny k cvičení
- Vytvoř transformer
StringIndexers názvemstring_indexer, kde vstupem budeSCHOOLDISTRICTNUMBERa výstupemSchool_Index. - Aplikuj transformer
string_indexernadfpomocífit()atransform(). Výsledný dataframe ulož do proměnnéindexed_df. - Vytvoř transformer
OneHotEncoders názvemencoder, kde vstupem budeSchool_Indexa výstupemSchool_Vec. - Aplikuj transformaci na
indexed_dfpomocítransform(). Průběžné kroky transformace si prohlédni pomocí připraveného kódu.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
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)