การสร้างการแบ่งชุดข้อมูล test/train แบบสุ่ม
ในแบบฝึกหัดถัดไปหลายข้อ จะใช้ข้อมูล mpg จากแพ็กเกจ ggplot2 ซึ่งอธิบายลักษณะของรถยนต์หลายยี่ห้อและรุ่น จากหลายปี โดยมีเป้าหมายเพื่อทำนายประสิทธิภาพการใช้เชื้อเพลิงในเมืองจากประสิทธิภาพบนทางหลวง
ในแบบฝึกหัดนี้ จะแบ่ง mpg ออกเป็นชุดข้อมูล training mpg_train (75% ของข้อมูล) และชุดข้อมูล test mpg_test (25% ของข้อมูล) วิธีหนึ่งที่ทำได้คือการสร้างคอลัมน์ของตัวเลขสุ่มแบบ uniform ระหว่าง 0 ถึง 1 โดยใช้ฟังก์ชัน runif() (docs)
หากมีชุดข้อมูล dframe ขนาด \(N\) และต้องการชุดข้อมูลย่อยแบบสุ่มที่มีขนาดประมาณ \(100 * X\)% ของ \(N\) (โดย \(X\) มีค่าระหว่าง 0 ถึง 1) ให้ทำดังนี้
- สร้างเวกเตอร์ของตัวเลขสุ่มแบบ uniform:
gp = runif(N) dframe[gp < X,]จะได้ขนาดที่ใกล้เคียงที่ต้องการdframe[gp >= X,]จะเป็นส่วนที่เหลือ
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Supervised Learning ใน R: การถดถอย
คำแนะนำการฝึกหัด
- ใช้ฟังก์ชัน
nrow(docs) เพื่อดึงจำนวนแถวของ data framempgแล้วกำหนดค่านี้ให้กับตัวแปรNและแสดงผล - คำนวณว่า 75% ของ N มีค่าประมาณเท่าใด กำหนดให้กับตัวแปร
targetและแสดงผล - ใช้
runif()เพื่อสร้างเวกเตอร์ของตัวเลขสุ่มแบบ uniform จำนวนNตัว โดยตั้งชื่อว่าgp - ใช้
gpเพื่อแบ่งmpgออกเป็นmpg_trainและmpg_test(โดยmpg_trainมีข้อมูลประมาณ 75%) - ใช้
nrow()เพื่อตรวจสอบขนาดของmpg_trainและmpg_testว่าได้ขนาดที่ถูกต้องหรือไม่
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# mpg is available
summary(mpg)
dim(mpg)
# Use nrow to get the number of rows in mpg (N) and print it
(N <- ___)
# Calculate how many rows 75% of N should be and print it
# Hint: use round() to get an integer
(target <- ___)
# Create the vector of N uniform random variables: gp
gp <- ___
# Use gp to create the training set: mpg_train (75% of data) and mpg_test (25% of data)
mpg_train <- ___
mpg_test <- ___
# Use nrow() to examine mpg_train and mpg_test
___
___