One Hot Encoding
У Сполучених Штатах місце проживання визначає, до яких шкіл можуть ходити ваші діти. Тож зрозуміло, що багатьом дуже важливо, до якого шкільного округу належатиме їхнє майбутнє житло. Хоча шкільні округи мають номери в SCHOOLDISTRICTNUMBER, за суттю це категоріальні значення. Тобто підсумовувати чи усереднювати їх не має очевидного сенсу. Тому в цьому прикладі ми перетворимо SCHOOLDISTRICTNUMBER з категоріальної змінної на числовий вектор, щоб далі використати його в нашій моделі машинного навчання.
Ця вправа є частиною курсу
Опрацювання ознак у PySpark
Інструкції до вправи
- Створіть перетворювач
StringIndexerз назвоюstring_indexer, указавшиSCHOOLDISTRICTNUMBERяк вхід іSchool_Indexяк вихід. - Застосуйте перетворювач
string_indexerдоdf, викликавшиfit()іtransform(). Збережіть перетворений датафрейм уindexed_df. - Створіть перетворювач
OneHotEncoderз назвоюencoder, використавшиSchool_Indexяк вхід іSchool_Vecяк вихід. - Застосуйте перетворення до
indexed_df, використавшиtransform(). Перегляньте покрокові результати перетворення за допомогою наданого коду.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
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)