One Hot Encoding
En Estados Unidos, el lugar donde vives determina a qué escuelas pueden asistir tus hijos. Por eso es comprensible que a mucha gente le importe mucho en qué distritos escolares estará su futura casa. Aunque los distritos escolares están numerados en SCHOOLDISTRICTNUMBER, en realidad son categóricos. Es decir, sumar o promediar esos valores no tiene sentido. Por tanto, en este ejemplo convertiremos SCHOOLDISTRICTNUMBER de una variable categórica a un vector numérico para usarlo más adelante en nuestro modelo de Machine Learning.
Este ejercicio forma parte del curso
Ingeniería de características con PySpark
Instrucciones del ejercicio
- Instancia un
StringIndexerllamadostring_indexerconSCHOOLDISTRICTNUMBERcomo entrada ySchool_Indexcomo salida. - Aplica el
transformerstring_indexeradfconfit()ytransform(). Guarda el dataframe transformado enindexed_df. - Crea un
OneHotEncoderllamadoencoderusandoSchool_Indexcomo entrada ySchool_Veccomo salida. - Aplica la transformación a
indexed_dfusandotransform(). Revisa los pasos iterativos de la transformación con el código proporcionado.
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
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)