เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

แสดงภาพการคาดการณ์การเช่าจักรยาน

ในแบบฝึกหัดก่อนหน้า คุณได้แสดงภาพการคาดการณ์ของโมเดลจักรยานโดยใช้กราฟกระจาย "ผลลัพธ์จริง vs. การคาดการณ์" แบบมาตรฐาน เนื่องจากข้อมูลการเช่าจักรยานเป็นข้อมูลอนุกรมเวลา จึงอาจน่าสนใจที่จะดูว่าโมเดลทำงานได้ดีเพียงใดเมื่อเวลาผ่านไป ในแบบฝึกหัดนี้ จะเปรียบเทียบการคาดการณ์กับยอดเช่าจริงรายชั่วโมง สำหรับ 14 วันแรกของเดือนสิงหาคม

เพื่อสร้างกราฟ จะใช้ฟังก์ชัน tidyr::pivot_longer() (docs) เพื่อรวบรวมค่าที่คาดการณ์และค่าจริงจาก bikesAugust ไว้ในคอลัมน์เดียว pivot_longer() รับอาร์กิวเมนต์ดังนี้:

  • data frame แบบ "wide" ที่ต้องการ pivot (ระบุโดยปริยายผ่าน pipe)
  • ชื่อของคอลัมน์ที่จะรวบรวมเป็นคอลัมน์เดียว (คีย์เวิร์ด "cols")
  • ชื่อของคอลัมน์คีย์ที่จะสร้างขึ้น ซึ่งจะเก็บชื่อของคอลัมน์ที่รวบรวม (คีย์เวิร์ด "names_to")
  • ชื่อของคอลัมน์ค่าที่จะสร้างขึ้น ซึ่งจะเก็บค่าจากคอลัมน์ที่รวบรวม (คีย์เวิร์ด "values_to")

จะใช้ data frame ที่ผ่านการ pivot แล้วเพื่อเปรียบเทียบจำนวนการเช่าจริงและที่คาดการณ์ตามเวลา ดัชนีเวลา instant นับจำนวนการสังเกตนับตั้งแต่เริ่มเก็บข้อมูล โค้ดตัวอย่างจะแปลง instant เป็นหน่วยวัน โดยเริ่มจาก 0

ข้อมูล data frame bikesAugust พร้อมกับการคาดการณ์ (bikesAugust$pred) ถูกโหลดไว้ล่วงหน้าแล้ว

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Supervised Learning ใน R: การถดถอย

ดูคอร์ส

คำแนะนำการฝึกหัด

  • เติมช่องว่างเพื่อพล็อตการคาดการณ์และจำนวนจริงรายชั่วโมง สำหรับ 14 วันแรกของเดือนสิงหาคม
    • แปลง instant ให้อยู่ในหน่วยวัน แทนที่จะเป็นชั่วโมง
    • ใช้ pivot_longer() กับคอลัมน์ cnt และ pred รวบรวมเป็นคอลัมน์ชื่อ value โดยมีคีย์ชื่อ valuetype
    • ใช้ filter() เพื่อเลือกสองสัปดาห์แรกของเดือนสิงหาคม
    • พล็อต 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")
แก้ไขและรันโค้ด