Nhóm hàm map

Machine Learning trong tidyverse

Dmitriy (Dima) Gorenshteyn

Lead Data Scientist, Memorial Sloan Kettering Cancer Center

Quy trình làm việc với cột danh sách

Machine Learning trong tidyverse

Quy trình làm việc với cột danh sách

Machine Learning trong tidyverse

Hàm map

Machine Learning trong tidyverse

Hàm map

Machine Learning trong tidyverse

Hàm map

Machine Learning trong tidyverse

Trung bình dân số theo quốc gia

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

Trung bình dân số theo quốc gia

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

[[2]]
[1] 30783053

[[3]]
[1] 16074837

[[4]]
[1] 7746272
Machine Learning trong tidyverse

2: Làm việc với cột danh sách - map() và 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 trong tidyverse

3: Đơn giản hóa cột danh sách - 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 trong tidyverse

Quy trình làm việc với cột danh sách

Machine Learning trong tidyverse

Làm việc + đơn giản hóa cột danh sách với map_*()

function returns
map() list
map_dbl() double
map_lgl() logical
map_chr() character
map_int() integer
Machine Learning trong tidyverse

Làm việc + đơn giản hóa cột danh sách với 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 trong tidyverse

Xây dựng mô hình với 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 trong tidyverse

Hãy map một chút!

Machine Learning trong tidyverse

Preparing Video For Download...