map 함수 패밀리

Tidyverse로 배우는 Machine Learning

Dmitriy (Dima) Gorenshteyn

Lead Data Scientist, Memorial Sloan Kettering Cancer Center

리스트 열 워크플로

Tidyverse로 배우는 Machine Learning

리스트 열 워크플로

Tidyverse로 배우는 Machine Learning

map 함수

Tidyverse로 배우는 Machine Learning

map 함수

Tidyverse로 배우는 Machine Learning

map 함수

Tidyverse로 배우는 Machine Learning

국가별 평균 인구

mean(nested$data[[1]]$population)
[1] 23129438
Tidyverse로 배우는 Machine Learning

국가별 평균 인구

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

[[2]]
[1] 30783053

[[3]]
[1] 16074837

[[4]]
[1] 7746272
Tidyverse로 배우는 Machine Learning

2: 리스트 열 활용 - map()과 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]>
Tidyverse로 배우는 Machine Learning

3: 리스트 열 단순화 - 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
Tidyverse로 배우는 Machine Learning

리스트 열 워크플로

Tidyverse로 배우는 Machine Learning

map_*()로 리스트 열 활용 및 단순화

함수 반환 타입
map() list
map_dbl() double
map_lgl() logical
map_chr() character
map_int() integer
Tidyverse로 배우는 Machine Learning

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
Tidyverse로 배우는 Machine Learning

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>
Tidyverse로 배우는 Machine Learning

직접 map을 사용해 보세요!

Tidyverse로 배우는 Machine Learning

Preparing Video For Download...