La famille de fonctions map

Machine Learning dans le tidyverse

Dmitriy (Dima) Gorenshteyn

Lead Data Scientist, Memorial Sloan Kettering Cancer Center

Flux de travail des colonnes de listes

Machine Learning dans le tidyverse

Flux de travail des colonnes de listes

Machine Learning dans le tidyverse

La fonction map

Machine Learning dans le tidyverse

La fonction map

Machine Learning dans le tidyverse

La fonction map

Machine Learning dans le tidyverse

Moyenne de population par pays

mean(nested$data[[1]]$population)
[1] 23129438
Machine Learning dans le tidyverse

Moyenne de population par pays

map(.x = nested$data, .f = ~mean(.x$population))
[[1]]
[1] 23129438

[[2]]
[1] 30783053

[[3]]
[1] 16074837

[[4]]
[1] 7746272
Machine Learning dans le tidyverse

2 : Travailler avec des colonnes de listes – map() et mutate()

pop_df <- nested %>% 
  mutate(pop_mean = map(data, ~mean(.x$population)))

pop_df
# A tibble: 77 x 3
   country    data              pop_mean 
   <fct>      <list>            <list>   
 1 Algeria    <tibble [52 × 6]> <dbl [1]>
 2 Argentina  <tibble [52 × 6]> <dbl [1]>
 3 Australia  <tibble [52 × 6]> <dbl [1]>
 4 Austria    <tibble [52 × 6]> <dbl [1]>
 5 Bangladesh <tibble [52 × 6]> <dbl [1]>
Machine Learning dans le tidyverse

3 : Simplifier des colonnes de listes – unnest()

pop_df %>% 
  unnest(pop_mean)
# A tibble: 77 x 3
   country    data               pop_mean
   <fct>      <list>                <dbl>
 1 Algeria    <tibble [52 × 6]>  23129438
 2 Argentina  <tibble [52 × 6]>  30783053
 3 Australia  <tibble [52 × 6]>  16074837
 4 Austria    <tibble [52 × 6]>   7746272
 5 Bangladesh <tibble [52 × 6]>  97649407
Machine Learning dans le tidyverse

Flux de travail des colonnes de listes

Machine Learning dans le tidyverse

Travailler et simplifier les colonnes de listes avec map_*()

fonction renvoie
map() liste
map_dbl() double
map_lgl() logique
map_chr() caractère
map_int() entier
Machine Learning dans le tidyverse

Travailler et simplifier avec map_dbl()

nested %>% 
  mutate(pop_mean = map_dbl(data, ~mean(.x$population)))
# A tibble: 77 x 3
   country    data               pop_mean
   <fct>      <list>                <dbl>
 1 Algeria    <tibble [52 × 6]>  23129438
  2 Argentina  <tibble [52 × 6]>  30783053
 3 Australia  <tibble [52 × 6]>  16074837
 4 Austria    <tibble [52 × 6]>   7746272
 5 Bangladesh <tibble [52 × 6]>  97649407
Machine Learning dans le tidyverse

Créer des modèles avec map()

nested %>%
   mutate(model = map(data, ~lm(formula = population~fertility, 
             data = .x)))
# A tibble: 77 x 3
   country    data              model   
   <fct>      <list>            <list>  
 1 Algeria    <tibble [52 × 6]> <S3: lm>
 2 Argentina  <tibble [52 × 6]> <S3: lm>
 3 Australia  <tibble [52 × 6]> <S3: lm>
 4 Austria    <tibble [52 × 6]> <S3: lm>
 5 Bangladesh <tibble [52 × 6]> <S3: lm>
Machine Learning dans le tidyverse

Cartographions quelque chose !

Machine Learning dans le tidyverse

Preparing Video For Download...