One-Hot Encoding
Negli Stati Uniti, il luogo in cui vivi determina a quali scuole i tuoi figli possono iscriversi. È quindi comprensibile che molte persone tengano molto al distretto scolastico in cui si troverà la loro futura casa. Anche se i distretti scolastici sono numerati in SCHOOLDISTRICTNUMBER, in realtà sono categorici: sommare o fare la media di questi valori non ha un significato evidente. In questo esempio convertiremo quindi SCHOOLDISTRICTNUMBER da variabile categorica a vettore numerico, da usare più avanti nel nostro modello di Machine Learning.
Questo esercizio fa parte del corso
Feature Engineering con PySpark
Istruzioni dell'esercizio
- Istanzia un
StringIndexerchiamatostring_indexerconSCHOOLDISTRICTNUMBERcome input eSchool_Indexcome output. - Applica il transformer
string_indexeradfconfit()etransform(). Salva il dataframe trasformato inindexed_df. - Crea un
OneHotEncoderchiamatoencoderusandoSchool_Indexcome input eSchool_Veccome output. - Applica la trasformazione a
indexed_dfusandotransform(). Esamina i passaggi iterativi della trasformazione con il codice fornito.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
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)