Transformando variáveis contínuas em lógicas
Variáveis lógicas são úteis porque muitas vezes é mais fácil pensar em termos de "sim ou não" do que em termos numéricos. Por exemplo, se alguém pergunta "Você gostaria de uma xícara de chá?", uma resposta sim ou não é preferível a "Há 0,73 de chance de eu querer uma xícara de chá". Isso também tem aplicações reais em data science. Por exemplo, um teste de diabetes pode retornar a concentração de glicose no plasma sanguíneo do paciente como um número. O que realmente importa é "O paciente tem diabetes?", então você precisa converter o número em um valor lógico, com base em algum limiar.
Em R base, isso é feito de forma simples, usando algo assim:
threshold_mmol_per_l <- 7
has_diabetes <- plasma_glucose_concentration > threshold_mmol_per_l
Todas as funções de transformação de features do sparklyr têm uma interface semelhante. Os três primeiros argumentos são sempre um tibble do Spark, uma string com o nome da coluna de entrada e uma string com o nome da coluna de saída. Ou seja, seguem este padrão.
a_tibble %>%
ft_some_transformation("x", "y", some_other_args)
A forma no sparklyr de converter uma variável contínua em lógica usa ft_binarizer(). O exemplo anterior de diabetes pode ser reescrito como o seguinte. Observe que o valor de threshold deve ser um número, não uma string que se refere a uma coluna do conjunto de dados.
diabetes_data %>%
ft_binarizer("plasma_glucose_concentration", "has_diabetes", threshold = threshold_mmol_per_l)
Seguindo a filosofia do Spark de usar DoubleType em todo lugar, a saída de ft_binarizer() não é realmente lógica; ela é numeric. Essa é a abordagem correta para permitir que você continue trabalhando no Spark e realize outras transformações, mas, se quiser processar seus dados em R, lembre-se de converter explicitamente os dados para lógico. O padrão de código a seguir é comum.
a_tibble %>%
ft_binarizer("x", "is_x_big", threshold = threshold) %>%
collect() %>%
mutate(is_x_big = as.logical(is_x_big))
Este exercício considera o nome nada feliz artist_hotttnesss, que fornece uma medida de quanto burburinho na mídia o artista tinha na época em que o conjunto de dados foi criado. Se você quiser aprender mais sobre como fazer gráficos com o pacote ggplot2, faça o curso Introduction to Data Visualization with ggplot2.
Este exercício faz parte do curso
Introdução ao Spark com sparklyr em R
Instruções do exercício
Uma conexão com o Spark foi criada para você como spark_conn. Um tibble vinculado aos metadados das faixas armazenado no Spark já foi definido como track_metadata_tbl.
- Crie uma variável chamada
hotttnesssa partir detrack_metadata_tbl.- Selecione o campo
artist_hotttnesss. - Use
ft_binarizer()para criar um novo campo,is_hottt_or_nottt, que é verdadeiro quandoartist_hotttnesssé maior que 0.5. - Faça o collect do resultado.
- Converta o campo
is_hottt_or_notttpara lógico.
- Selecione o campo
- Desenhe um gráfico de barras com
ggplot()deis_hottt_or_nottt.- O primeiro argumento de
ggplot()é o argumento de dados,hotttnesss. - O segundo argumento de
ggplot()é a estética,is_hottt_or_notttdentro deaes(). - Adicione
geom_bar()para desenhar as barras.
- O primeiro argumento de
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# track_metadata_tbl has been pre-defined
track_metadata_tbl
hotttnesss <- track_metadata_tbl %>%
# Select artist_hotttnesss
___ %>%
# Binarize to is_hottt_or_nottt
___ %>%
# Collect the result
___ %>%
# Convert is_hottt_or_nottt to logical
___
# Draw a barplot of is_hottt_or_nottt
ggplot(___, aes(___)) +
___()