One Hot Encoding
În Statele Unite, locul în care locuiești determină la ce școli pot merge copiii tăi. Prin urmare, este de înțeles că mulți oameni acordă o mare importanță districtelor școlare în care se află viitoarea lor locuință. Deși districtele școlare sunt numerotate în SCHOOLDISTRICTNUMBER, ele sunt de fapt variabile categorice – adică sumarea sau calcularea mediei acestor valori nu are nicio semnificație reală. Prin urmare, în acest exemplu vom converti SCHOOLDISTRICTNUMBER dintr-o variabilă categorică într-un vector numeric, pe care îl vom folosi ulterior în modelul nostru de machine learning.
Acest exercițiu face parte din cursul
Feature Engineering cu PySpark
Instrucțiuni pentru exercițiu
- Instanțiază un transformer
StringIndexernumitstring_indexer, cuSCHOOLDISTRICTNUMBERca intrare șiSchool_Indexca ieșire. - Aplică transformatorul
string_indexerpedffolosindfit()șitransform(). Stochează dataframe-ul transformat înindexed_df. - Creează un transformer
OneHotEncodernumitencoder, folosindSchool_Indexca intrare șiSchool_Vecca ieșire. - Aplică transformarea pe
indexed_dffolosindtransform(). Inspectează pașii iterativi ai transformării cu ajutorul codului furnizat.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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)