$30 off During Our Annual Pro Sale. View Details »

Tidyverse ile veri bilimi

Tidyverse ile veri bilimi

Mine Cetinkaya-Rundel

April 01, 2021
Tweet

More Decks by Mine Cetinkaya-Rundel

Other Decks in Programming

Transcript

  1. ile veri bilimi
    🔗 bit.ly/tidy-veri-bilimi dr. mine çetinkaya-rundel

    View Slide

  2. tidyverse
    Tidyverse, veri bilimi için tasarlanmış R
    paketlerinin prensipli bir koleksiyonudur.


    Tüm paketler, temel bir tasarım felsefesi,
    dilbilgisi ve veri yapısı paylaşır.

    View Slide

  3. tidyverse paketleri
    library(tidyverse))
    ggplot2: veri görselleme


    dplyr: veri manipülasyonu


    tidyr: veri düzenleme


    readr: veri okuma ve yazma


    forcats: kategorik veri manipülasyonu


    stringr: dizi manipülasyonu


    tibble: modern data çerçeveleri


    purrr: fonksiyonel programlama


    install.packages(tidyverse)) yukarıdakiler + a birkaç paket daha

    View Slide

  4. tidyverse temelleri
    tidy (düzenli) veri


    %>% ile çoklu işlemler

    View Slide

  5. düzenli veri
    her bir değişkenin
    kendine ait sütunu olmalı
    each observation must
    have its own row
    each value must have
    its own cell
    değişkenler

    View Slide

  6. her bir değişkenin
    kendine ait sütunu olmalı
    her bir gözlemin kendine
    ait bir satırı olmalı
    each value must have
    its own cell
    değişkenler gözlemler
    düzenli veri

    View Slide

  7. her bir değişkenin
    kendine ait sütunu olmalı
    her bir gözlemin kendine
    ait bir satırı olmalı
    her bir değerin kendine
    ait bir hücresi olmalı
    değişkenler gözlemler değerler
    düzenli veri

    View Slide

  8. düzenli olmayan veri
    bir sütunda birden çok deger


    hiyerarşik veri (JSON, XML, v.b.)





    View Slide

  9. düzenli olmayan veri
    “Mutlu aileler birbirlerine benzerler, her mutsuz ailenin ise


    kendince bir mutsuzluğu vardır.”


    –– Leo Tolstoy
    "Düzenli veri grupları birbirlerine benzerler ancak her düzensiz veri grubunun
    kendince bir düzensizliği vardır.”


    –– Hadley Wickham

    View Slide

  10. tidyverse temelleri
    tidy (düzenli) veri


    %>% ile çoklu işlemler

    View Slide

  11. amaç
    Anahtarlarımı bulmak, sonra arabamı çalıştırmak, sonra işe gitmek


    ve sonra arabamı park etmek istiyorum.

    View Slide

  12. iç içe
    park_et(sür(araba_çalıştır(bul("anahtarlar")), istikamet = "iş"))

    View Slide

  13. park_et(sür(araba_çalıştır(bul("anahtarlar")), istikamet = "iş"))
    iç içe

    View Slide

  14. park_et(sür(araba_çalıştır(bul("anahtarlar")), istikamet = "iş"))
    iç içe

    View Slide

  15. park_et(sür(araba_çalıştır(bul("anahtarlar")), istikamet = "iş"))
    iç içe

    View Slide

  16. bul("anahtarlar") %>%


    start_car() %>%


    drive(to = "work") %>%


    park()
    pipe ile

    View Slide

  17. bul("anahtarlar") %>%


    araba_çalıştır() %>%


    drive(to = "work") %>%


    park()
    pipe ile

    View Slide

  18. bul("anahtarlar") %>%


    araba_çalıştır() %>%


    sür(istikamet = "iş") %>%


    park()
    pipe ile

    View Slide

  19. bul("anahtarlar") %>%


    araba_çalıştır() %>%


    sür(istikamet = "iş") %>%


    park_et()
    pipe ile

    View Slide

  20. örnek #1
    ggplot
    2

    +
    art by @allison_horst

    View Slide

  21. library(palmerpenguins)
    library(tidyverse)
    ggplot(data = penguins, aes(x = flipper_length_mm, y = body_mass_g)) +
    geom_point(aes(color = species, shape = species)) +
    labs(
    title = "Penguen boyutu, Palmer Station LTER",
    subtitle = "Adelie, Chinstrap ve Gentoo Penguenleri


    için palet uzunluğu ve


    vücut kütlesi",
    x = "Palet uzunluğu (mm)",
    y = "Kütle (g)",
    color = "Penguen türü",
    shape = "Penguen türü"
    )
    göze hitap


    eden gra
    fi
    kler

    View Slide

  22. bedavaya


    gösterge
    library(palmerpenguins)
    library(tidyverse)
    ggplot(data = penguins, aes(x = flipper_length_mm, y = body_mass_g)) +
    geom_point(aes(color = species, shape = species)) +
    labs(
    title = "Penguen boyutu, Palmer Station LTER",
    subtitle = "Adelie, Chinstrap ve Gentoo Penguenleri


    için palet uzunluğu ve


    vücut kütlesi",
    x = "Palet uzunluğu (mm)",
    y = "Kütle (g)",
    color = "Penguen türü",
    shape = "Penguen türü"
    )

    View Slide

  23. istediğiniz kadar özelleştirebilirsiniz

    View Slide

  24. ggplot(data = penguins, aes(x = flipper_length_mm, y = body_mass_g)) +
    geom_point(aes(color = species, shape = species), size = 3, alpha = 0.8) +
    labs(
    title = "Penguen boyutu, Palmer Station LTER",
    subtitle = "Adelie, Chinstrap ve Gentoo Penguenleri için palet uzunluğu


    ve vücut kütlesi",
    x = "Palet uzunluğu (mm)",
    y = "Kütle (g)",
    color = "Penguen türü",
    shape = "Penguen türü"
    )

    View Slide

  25. ggplot(data = penguins, aes(x = flipper_length_mm, y = body_mass_g)) +
    geom_point(aes(color = species, shape = species), size = 3, alpha = 0.8) +
    labs(
    title = "Penguin size, Palmer Station LTER",
    subtitle = "Flipper length and body mass


    for Adelie, Chinstrap and Gentoo


    Penguins",
    x = "Flipper length (mm)",
    y = "Body mass (g)",
    color = "Penguin species",
    shape = "Penguin species"
    )
    +

    scale_color_manual
    (

    values = c("darkorange",


    "purple",


    "cyan4"))

    View Slide

  26. ggplot(data = penguins, aes(x = flipper_length_mm, y = body_mass_g)) +
    geom_point(aes(color = species, shape = species), size = 3, alpha = 0.8) +
    labs(
    title = "Penguin size, Palmer Station LTER",
    subtitle = "Flipper length and body mass


    for Adelie, Chinstrap and Gentoo


    Penguins",
    x = "Flipper length (mm)",
    y = "Body mass (g)",
    color = "Penguin species",
    shape = "Penguin species"
    )
    +

    scale_color_manual
    (

    values = c("darkorange",


    "purple",


    "cyan4"))
    +

    theme_minimal()

    View Slide

  27. ggplot(data = penguins, aes(x = flipper_length_mm, y = body_mass_g)) +
    geom_point(aes(color = species, shape = species), size = 3, alpha = 0.8) +
    labs(
    title = "Penguin size, Palmer Station LTER",
    subtitle = "Flipper length and body mass


    for Adelie, Chinstrap and Gentoo


    Penguins",
    x = "Flipper length (mm)",
    y = "Body mass (g)",
    color = "Penguin species",
    shape = "Penguin species"
    )
    +

    scale_color_manual
    (

    values = c("darkorange",


    "purple",


    “cyan4”))
    +

    theme_minimal()
    +

    theme
    (

    legend.position = c(0.2, 0.7)
    ,

    legend.background =


    element_rect
    (

    fill = "white",


    color = N
    A

    )

    )

    View Slide

  28. örnek #2
    tidy
    r

    +

    View Slide

  29. deney_verisi
    #> # A tibble: 6 x 5
    #> hasta grup tansiyon_1 tansiyon_2 tansiyon_3
    #>
    #> 1 1 deney 120/80 135/93 125/90
    #> 2 2 kontrol 172/105 171/82 161/117
    #> 3 3 deney 140/89 133/92 121/86
    #> 4 4 kontrol 151/92 112/109 150/83
    #> 5 5 deney 175/93 173/90 120/118
    #> 6 6 kontrol 180/85 173/94 174/106
    #> # A tibble: 18 x
    5

    #> hasta grup ölçüm sistolik diyastoli
    k

    #> >

    #> 1 1 deney 1 120 8
    0

    #> 2 1 deney 2 135 9
    3

    #> 3 1 deney 3 125 9
    0

    #> 4 2 kontrol 1 172 10
    5

    #> 5 2 kontrol 2 171 8
    2

    #> 6 2 kontrol 3 161 11
    7

    #> # … with 12 more rows

    View Slide

  30. deney_verisi %>%
    pivot_longer(
    cols = contains("tansiyon"),
    names_to = "ölçüm",
    names_prefix = "tansiyon_",
    values_to = "değer
    "

    )

    #> # A tibble: 18 x
    4

    #> hasta grup ölçüm değer


    #>


    #> 1 1 deney 1 120/80


    #> 2 1 deney 2 135/93


    #> 3 1 deney 3 125/90


    #> 4 2 kontrol 1 172/10
    5

    #> 5 2 kontrol 2 171/82


    #> 6 2 kontrol 3 161/11
    7

    #> # … with 12 more rows
    deney_veris
    i

    #> # A tibble: 6 x
    5

    #> hasta grup tansiyon_1 tansiyon_2 tansiyon_
    3

    #>


    #> 1 1 deney 120/80 135/93 125/90


    #> 2 2 kontrol 172/105 171/82 161/117


    #> 3 3 deney 140/89 133/92 121/86


    #> 4 4 kontrol 151/92 112/109 150/83


    #> 5 5 deney 175/93 173/90 120/118


    #> 6 6 kontrol 180/85 173/94 174/106

    View Slide

  31. experiment_data %>%
    pivot_longer(
    cols = contains("bp"),
    names_to = "measurement",
    names_prefix = "bp_",
    values_to = "value
    "

    ) %>%
    separate(değer, into = c("sistolik", "diyastolik"), convert = TRUE
    )

    #> # A tibble: 18 x
    5

    #> hasta grup ölçüm sistolik diyastoli
    k

    #> >

    #> 1 1 deney 1 120 8
    0

    #> 2 1 deney 2 135 9
    3

    #> 3 1 deney 3 125 9
    0

    #> 4 2 kontrol 1 172 10
    5

    #> 5 2 kontrol 2 171 8
    2

    #> 6 2 kontrol 3 161 11
    7

    #> # … with 12 more rows
    #> # A tibble: 18 x
    4

    #> patient group measurement value


    #>


    #> 1 1 treatment 1 120/80


    #> 2 1 treatment 2 135/93


    #> 3 1 treatment 3 125/90


    #> 4 2 control 1 172/10
    5

    #> 5 2 control 2 171/82


    #> 6 2 control 3 161/11
    7

    #> # … with 12 more rows

    View Slide

  32. geniş ve düzenli


    bir ekosiste
    m

    View Slide

  33. çoklu gra
    fi
    kler
    gghighlight
    gra
    fi
    klerde veri
    vurgulama
    ve çok daha fazlası…
    çoklu işlemler serilerine eklenir ggplot2 tabakalarina eklenir
    PDF çıktısı için
    güzel ve komplex
    tablolar
    veri temizliği

    View Slide

  34. tidymodels ile
    modelleme ve
    makine öğrenimi

    View Slide

  35. tidymodels
    tidyverse ilkeleri kullanarak modelleme
    ve makine öğrenimi için paket
    koleksiyonu


    parsnip: geniş bir model yelpazesine
    birleşik arayüz


    recipes: özellik mühendisliği için veri ön
    işleme araçları


    rsample: tahminleme ve model
    performansı değerlendirmesi için
    yeniden örnekleme


    tek bir veri çerçevesinde "birçok model”
    ile yardımcı işlevlerle metriklere kolay
    erişim

    View Slide

  36. #rstats komünitesi
    ile günce
    l

    ve bağlı kalın
    art by @allison_horst

    View Slide

  37. (iyi) soru sorun
    reproducible examples (tekrarlanabilir örnekler) yapın


    örneklerinizi olabildiğince minimal hale getirin


    açık bir forumda soruyorsanız (RStudio Community, Stack Over
    fl
    ow, vb.) bir
    pakette bulunan verileri kullanmayı deneyin

    View Slide

  38. View Slide

  39. View Slide

  40. View Slide

  41. komünite
    Twitter’da #rstats


    R Weekly haftalık haber bülteni: rweekly.org


    TidyTuesday: github.com/rfordatascience/tidytuesday


    RLadies: rladies.org + Slack


    useR grupları: r-consortium.org/blog/2019/09/09/r-community-explorer-r-user-
    groups

    View Slide

  42. kaynaklar
    öğre
    n

    tidyverse: tidyverse.org/learn


    tidymodels: tidymodels.org/start


    referans kağıtları: rstudio.com/resources/cheatsheets (Türkçe çeviriler!)


    öğret: datasciencebox.org

    View Slide

  43. ile veri bilimi
    mine-cetinkaya-rundel
    [email protected]
    @minebocek
    🔗 bit.ly/tidy-veri-bilimi

    View Slide