EmpezarEmpieza gratis

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

Ver curso

Instrucciones del ejercicio

  • Instancia un StringIndexer llamado string_indexer con SCHOOLDISTRICTNUMBER como entrada y School_Index como salida.
  • Aplica el transformer string_indexer a df con fit() y transform(). Guarda el dataframe transformado en indexed_df.
  • Crea un OneHotEncoder llamado encoder usando School_Index como entrada y School_Vec como salida.
  • Aplica la transformación a indexed_df usando transform(). 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)
Editar y ejecutar código