BaşlayınÜcretsiz Başlayın

Mutfakları keşfet: en iyi malzemeler, yeniden

Her mutfak, az sayıda özgün malzeme sayesinde kendine has bir lezzete sahiptir. En popüler malzemelere bakarak bunları ortaya çıkaramayız; çünkü tuz veya şeker gibi pişirmenin temel taşlarıdır.

Bu arayışımızda bize yardımcı olabilecek bir diğer metrik, terim sıklığı–ters belge sıklığı (TFIDF). Bu, bir koleksiyondaki (tarifler) bir belge (mutfak) için bir kelimenin (malzemenin) ne kadar önemli olduğunu yansıtan sayısal bir istatistiktir.

Senin için tf_idf değerlerini önceden hesapladık ve recipes_enriched adlı zenginleştirilmiş bir veri kümesi oluşturduk. Amacın, bir mutfaktaki en özgün malzemelerin tf_idf ile ölçülen yatay çubuk grafiğini gösteren bir Shiny uygulaması yapmak.

Seçilen mutfağa göre en iyi malzemelerin etkileşimli yatay çubuk grafiğini gösteren bir uygulama

Hesaplamaları kapsüllemek ve görselleştirme kodunun sadece grafiği oluşturmaya odaklanmasını sağlamak için bir reaktif ifade kullanacaksın. Bu, iyi bir programlama pratiğidir ve modüler, yüksek performanslı Shiny uygulamaları oluşturmanı sağlar.

shiny, dplyr, ggplot2 ve plotly paketlerini yükledik. Aşağıda, mutfağa göre en iyi malzemeleri süzmek ve yatay bir çubuk grafik oluşturmak için iki kullanışlı kod parçası var. Uygun şekilde düzenleyebilirsin.

top_ingredients <- recipes_enriched %>% 
  filter(cuisine == 'greek') %>% 
  arrange(desc(tf_idf)) %>% 
  head(5) 

ggplot(top_ingredients, aes(x = ingredient, y = tf_idf)) +
  geom_col() +
  coord_flip()

Bu egzersiz

R ile Shiny Kullanarak Web Uygulamaları Geliştirme

kursunun bir parçasıdır
Kursu Görüntüle

Egzersiz talimatları

  • UI:

    • plot_top_ingredients adlı etkileşimli bir plotly çıktısı ekle ve uygun bir etiketle tabPanel() içine yerleştir.
  • Server:

    • recipes_enriched veri kümesini seçilen mutfak ve tf_idf değerine göre en özgün malzemeler için filtreleyen rval_top_ingredients adlı bir reaktif ifade ekle.
    • En iyi malzemelerin ve tf_idf değerlerinin etkileşimli bir çubuk grafiğini üret ve bunu plot_top_ingredients adlı bir çıktıya ata. Kendine ekstra bir meydan okuma olarak, çubukları tf_idf değerine göre azalan sırada görüntülemeyi deneyebilirsin.

Uygulamalı interaktif egzersiz

Bu örnek kodu tamamlayarak bu egzersizi bitirin.

ui <- fluidPage(
  titlePanel('Explore Cuisines'),
  sidebarLayout(
    sidebarPanel(
      selectInput('cuisine', 'Select Cuisine', unique(recipes$cuisine)),
      sliderInput('nb_ingredients', 'Select No. of Ingredients', 1, 100, 10),
    ),
    mainPanel(
      tabsetPanel(
        # CODE BELOW: Add a plotly output named "plot_top_ingredients"
        
        tabPanel('Table', DT::DTOutput('dt_top_ingredients'))
      )
    )
  )
)

server <- function(input, output, session) {
  # CODE BELOW: Add a reactive expression named `rval_top_ingredients` that
  # filters `recipes_enriched` for the selected cuisine and top ingredients
  # based on the tf_idf value.

  
  
  
  
  
  
  # CODE BELOW: Render a horizontal bar plot of top ingredients and 
  # the tf_idf of recipes they get used in, and assign it to an output named 
  # `plot_top_ingredients` 
  
  
  
  
  
  output$dt_top_ingredients <- DT::renderDT({
    recipes %>% 
      filter(cuisine == input$cuisine) %>% 
      count(ingredient, name = 'nb_recipes') %>% 
      arrange(desc(nb_recipes)) %>% 
      head(input$nb_ingredients)
  })
}

shinyApp(ui, server)
Kodu Düzenle ve Çalıştır