สุ่มลำดับข้อมูลใน Data Frame
วิธีหนึ่งในการแบ่งชุดข้อมูลเป็น train/test คือการสุ่มลำดับข้อมูลก่อน แล้วจึงแบ่งออกเป็นสองส่วน วิธีนี้ช่วยให้ทั้ง training set และ test set เป็นตัวอย่างแบบสุ่ม และไม่นำความลำเอียงจากลำดับเดิมของชุดข้อมูล (เช่น ถ้าข้อมูลถูกเรียงตามราคาหรือขนาดมาก่อน) ติดไปด้วย ลองนึกภาพว่านี่คือการสับไพ่ก่อนแจก
ขั้นแรก ตั้งค่า random seed เพื่อให้ผลลัพธ์สามารถทำซ้ำได้ และได้การแบ่งแบบสุ่มเดิมทุกครั้งที่รันสคริปต์:
set.seed(42)
จากนั้น ใช้ฟังก์ชัน sample() เพื่อสุ่มลำดับ index ของแถวในชุดข้อมูล diamonds ซึ่งสามารถนำ index เหล่านี้ไปใช้จัดเรียงข้อมูลใหม่ได้ในภายหลัง:
rows <- sample(nrow(diamonds))
สุดท้าย ใช้เวกเตอร์แบบสุ่มนี้เพื่อจัดเรียงชุดข้อมูล diamonds ใหม่:
diamonds <- diamonds[rows, ]
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Machine Learning ด้วย caret ใน R
คำแนะนำการฝึกหัด
- ตั้งค่า random seed เป็น 42
- สร้างเวกเตอร์ของ index แถวชื่อ
rows - สุ่มลำดับข้อมูลใน data frame
diamondsใหม่ แล้วกำหนดผลลัพธ์ให้กับshuffled_diamonds
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Set seed
# Shuffle row indices: rows
# Randomly order data