ComenzarEmpieza gratis

Cadenas y factores

Como sabes, Spark requiere datos numéricos para el modelado. Hasta ahora esto no ha sido un problema; incluso las columnas booleanas pueden convertirse fácilmente en enteras sin ningún problema. Pero también utilizarás la compañía aérea y el destino del avión como características de tu modelo. Están codificadas como cadenas y no hay ninguna forma obvia de convertirlas a un tipo de dato numérico.

Afortunadamente, PySpark tiene funciones para manejar esto integradas en el submódulo pyspark.ml.features. Puedes crear lo que se llaman "vectores de un punto" para representar la compañía aérea y el destino de cada vuelo. Un vector de un punto es una forma de representar una característica categórica en la que cada observación tiene un vector en el que todos los elementos son cero, excepto como máximo un elemento, que tiene un valor de uno (1).

Cada elemento del vector corresponde a un nivel de la característica, por lo que es posible saber cuál es el nivel correcto viendo qué elemento del vector es igual a uno (1).

El primer paso para codificar tu rasgo categórico es crear un StringIndexer. Los miembros de esta clase son Estimators que toman un DataFrame con una columna de cadenas y asignan cada cadena única a un número. A continuación, Estimator devuelve un Transformer que toma un DataFrame, le adjunta la asignación como metadatos y devuelve un nuevo DataFrame con una columna numérica correspondiente a la columna de cadena.

El segundo paso es codificar esta columna numérica como un vector de un solo golpe utilizando un OneHotEncoder. Esto funciona exactamente igual que el StringIndexer creando un Estimator y luego un Transformer. El resultado final es una columna que codifica tu característica categórica como un vector adecuado para las rutinas de machine learning.

Esto puede parecer complicado, ¡pero no te preocupes! Todo lo que tienes que recordar es que necesitas crear un StringIndexer y un OneHotEncoder, y el Pipeline se encargará del resto.

¿Por qué tienes que codificar un rasgo categórico como un vector de un solo punto?

Este ejercicio forma parte del curso

Introducción a PySpark

Ver curso

Ejercicio interactivo práctico

Convierte la teoría en acción con uno de nuestros ejercicios interactivos

Empieza a hacer ejercicio