Strings e fatores
Como você sabe, o Spark requer dados numéricos para modelagem. Até o momento, isso não tem sido um problema; mesmo as colunas booleanas podem ser facilmente convertidas em inteiros sem nenhum problema. Mas você também deve usar a companhia aérea e o destino do avião como variáveis independentes no modelo. Elas são codificadas como strings, e não há nenhuma maneira óbvia de convertê-las em um tipo de dados numéricos.
Felizmente, o PySpark tem funções para lidar com isso integradas no submódulo pyspark.ml.features
. Você pode criar o que chamamos de "vetores one-hot" para representar a companhia aérea e o destino de cada voo. Um vetor one-hot é uma forma de representar uma variável independente categórica em que cada observação tem um vetor em que todos os elementos são zero, exceto no máximo um elemento, que tem valor igual a um (1).
Cada elemento do vetor corresponde a um nível da variável independente, portanto é possível saber qual é o nível correto vendo qual elemento do vetor é igual a um (1).
A primeira etapa para codificar sua variável independente categórica é criar um StringIndexer
. Os membros dessa classe são Estimator
s que recebem um DataFrame com uma coluna de strings e associam cada string exclusiva a um número. Em seguida, o Estimator
retorna um Transformer
que recebe um DataFrame, anexa o mapeamento a ele como metadados e retorna um novo DataFrame com uma coluna numérica correspondente à coluna de strings.
A segunda etapa é codificar essa coluna numérica como um vetor one-hot usando um OneHotEncoder
. Funciona exatamente da mesma forma que o StringIndexer
, criando um Estimator
e, em seguida, um Transformer
. O resultado final é uma coluna que codifica sua variável independente categórica como um vetor adequado para as rotinas de aprendizado de máquina!
Pode parecer complicado, mas não se preocupe! Basta se lembrar que você precisa criar um StringIndexer
e um OneHotEncoder
, e o Pipeline
cuida do resto.
Por que é preciso codificar uma variável independente categórica como um vetor one-hot?
Este exercício faz parte do curso
Introdução ao PySpark
Exercício interativo prático
Transforme a teoria em ação com um de nossos exercícios interativos
