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.

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ırEgzersiz talimatları
UI:
plot_top_ingredientsadlı etkileşimli bir plotly çıktısı ekle ve uygun bir etiketletabPanel()içine yerleştir.
Server:
recipes_enrichedveri kümesini seçilen mutfak vetf_idfdeğerine göre en özgün malzemeler için filtreleyenrval_top_ingredientsadlı bir reaktif ifade ekle.- En iyi malzemelerin ve
tf_idfdeğerlerinin etkileşimli bir çubuk grafiğini üret ve bunuplot_top_ingredientsadlı bir çıktıya ata. Kendine ekstra bir meydan okuma olarak, çubuklarıtf_idfdeğ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)