One Hot Encoding
I USA avgör var du bor vilka skolor dina barn kan gå i. Det är därför förståeligt att många bryr sig om vilka skoldistrikt deras framtida hem tillhör. Även om skoldistrikten är numrerade i SCHOOLDISTRICTNUMBER är de i grunden kategoriska variabler – det vill säga att summera eller medelvärdesberäkna dessa värden saknar egentlig mening. I den här övningen konverterar vi därför SCHOOLDISTRICTNUMBER från en kategorisk variabel till en numerisk vektor för att använda i maskininlärningsmodellen senare.
Den här övningen är en del av kursen
Feature Engineering med PySpark
Övningsinstruktioner
- Instansiera en
StringIndexer-transformer kalladstring_indexermedSCHOOLDISTRICTNUMBERsom indata ochSchool_Indexsom utdata. - Applicera transformern
string_indexerpådfmedfit()ochtransform(). Lagra den transformerade dataramen iindexed_df. - Skapa en
OneHotEncoder-transformer kalladencodermedSchool_Indexsom indata ochSchool_Vecsom utdata. - Applicera omvandlingen på
indexed_dfmedtransform(). Undersök de iterativa stegen i omvandlingen med den medföljande koden.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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)