แล้วเราต้องการแบ่งข้อมูลนี้ออกเป็น k ส่วน
ตัวอย่างเช่น ถ้าเราต้องการทำ V-fold Cross-Validation เช่นต้องการแบ่งข้อมูลจำนวน 2000 ระเบียนออกเป็น 10 ส่วนโดยส่วนหนึ่งเอาไว้สร้าง model กับ อีกส่วนไว้ validate model เป็นต้น
ในกรณีนี้ n = 2000 และ k = 10 เป็นต้น
มีวิธีทำง่ายๆ ใน MATLAB ดังนี้
- สร้าง random number ขึ้นมา 2000 ตัวก่อน, rand(2000,1)
- scale up มันด้วย k, rand(2000,1)*k
- ปัดตัวเลขขึ้นเป็น integer ถัดไป, ceil(rand(2000,1)*k)
สรุปคำสั่งที่ต้องใช้คือ
ceil(rand(n,1)*k)
ตัวอย่างการแบ่งข้อมูล 10 ระเบียนออกเป็น 3 กลุ่ม
>> ceil(rand(10,1)*3)
ans =
2
1
1
1
3
1
3
2
3
2
Note: แต่คิดไปคิดมา ถ้าไม่ต้องการ Random ละก็ ให้มัน mod ตัวเลข 1 ถึง n ก็จะได้เหมือนกันครับ
เช่น mod(1:10,3)+1 จะไ้ด้ผลลัพธ์ประมาณนี้ครับ
2 3 1 2 3 1 2 3 1 2
>> ceil(rand(10,1)*3)
ans =
2
1
1
1
3
1
3
2
3
2
Note: แต่คิดไปคิดมา ถ้าไม่ต้องการ Random ละก็ ให้มัน mod ตัวเลข 1 ถึง n ก็จะได้เหมือนกันครับ
เช่น mod(1:10,3)+1 จะไ้ด้ผลลัพธ์ประมาณนี้ครับ
2 3 1 2 3 1 2 3 1 2