開始使用免費開始

視覺化單車租賃的預測結果

在前一個練習中,你用標準的「實際值 vs. 預測值」散佈圖來視覺化單車模型的預測。由於單車租賃資料是時間序列,你可能也會想知道模型隨時間的表現。在這個練習中,你會在 8 月的前 14 天中,逐小時比較預測值與實際租賃量。

為了建立圖表,你將使用 tidyr::pivot_longer()docs)把 bikesAugust 中的預測值與實際值合併到同一個欄位。pivot_longer() 的引數包含:

  • 要轉寬為長的資料框(在管線中隱含傳入)
  • 要彙整成單一欄位的欄名(關鍵字「cols」)。
  • 要建立的鍵欄位名稱——其中包含被彙整欄位的名稱(關鍵字「names_to」)。
  • 要建立的值欄位名稱——其中包含被彙整欄位的數值(關鍵字「values_to」)。

你會用轉換後的資料框,將實際與預測的租賃計數作為時間的函數來比較。時間指標 instant 是從資料蒐集開始以來的觀測次數。範例程式碼把 instant 轉換為以天為單位,從 0 開始。

已預先載入含有預測值(bikesAugust$pred)的 bikesAugust 資料框。

本練習屬於課程

R 中的監督式學習:回歸

檢視課程

練習說明

  • 填入空格,繪製 8 月前 14 天逐小時的預測與實際計數。
    • instant 從小時轉換為天的單位
    • cntpred 欄位執行 pivot_longer(),輸出到名為 value 的欄位,鍵欄位命名為 valuetype
    • 使用 filter() 篩選 8 月的前兩週
    • value 視為 instant(天)的函數來繪圖。

模型有抓到單車租賃的整體時間型態嗎?

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# Plot predictions and cnt by date/time
bikesAugust %>% 
  # set start to 0, convert unit to days
  mutate(instant = (instant - min(instant))/24) %>%  
  # collect cnt and pred into a value column
  pivot_longer(cols = c('cnt', 'pred'), names_to = '___', values_to = '___') %>%  
  filter(instant < 14) %>% # restric to first 14 days
  # plot value by instant
  ggplot(aes(x = ___, y = ___, color = valuetype, linetype = valuetype)) + 
  geom_point() + 
  geom_line() + 
  scale_x_continuous("Day", breaks = 0:14, labels = 0:14) + 
  scale_color_brewer(palette = "Dark2") + 
  ggtitle("Predicted August bike rentals, Quasipoisson model")
編輯並執行程式碼