Rodzina funkcji map

Uczenie maszynowe w tidyverse

Dmitriy (Dima) Gorenshteyn

Lead Data Scientist, Memorial Sloan Kettering Cancer Center

Przepływ pracy z kolumnami list

Uczenie maszynowe w tidyverse

Przepływ pracy z kolumnami list

Uczenie maszynowe w tidyverse

Funkcja map

Uczenie maszynowe w tidyverse

Funkcja map

Uczenie maszynowe w tidyverse

Funkcja map

Uczenie maszynowe w tidyverse

Średnia populacji według kraju

mean(nested$data[[1]]$population)
[1] 23129438
Uczenie maszynowe w tidyverse

Średnia populacji według kraju

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

[[2]]
[1] 30783053

[[3]]
[1] 16074837

[[4]]
[1] 7746272
Uczenie maszynowe w tidyverse

2: Praca z kolumnami list – map() i 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]>
Uczenie maszynowe w tidyverse

3: Upraszczanie kolumn list – 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
Uczenie maszynowe w tidyverse

Przepływ pracy z kolumnami list

Uczenie maszynowe w tidyverse

Praca z kolumnami list i ich upraszczanie za pomocą map_*()

funkcja zwraca
map() lista
map_dbl() double
map_lgl() logical
map_chr() character
map_int() integer
Uczenie maszynowe w tidyverse

Praca z kolumnami list i ich upraszczanie za pomocą 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
Uczenie maszynowe w tidyverse

Budowanie modeli za pomocą 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>
Uczenie maszynowe w tidyverse

Czas na mapowanie!

Uczenie maszynowe w tidyverse

Preparing Video For Download...