วิธีแยกข้อมูลในการฝึก & #038; ชุดทดสอบใน r (3 วิธี)
บ่อยครั้ง เมื่อเราปรับ อัลกอริธึมการเรียนรู้ของเครื่อง ให้เข้ากับชุดข้อมูล ก่อนอื่นเราจะแบ่งชุดข้อมูลออกเป็นชุดการฝึกและชุดทดสอบ
มีสามวิธีทั่วไปในการแบ่งข้อมูลออกเป็นชุดการฝึกอบรมและการทดสอบใน R:
วิธีที่ 1: ใช้ Base R
#make this example reproducible set. seeds (1) #use 70% of dataset as training set and 30% as test set sample <- sample(c( TRUE , FALSE ), nrow(df), replace= TRUE , prob=c( 0.7 , 0.3 )) train <- df[sample, ] test <- df[!sample, ]
วิธีที่ 2: ใช้แพ็คเกจ caTools
library (caTools) #make this example reproducible set. seeds (1) #use 70% of dataset as training set and 30% as test set sample <- sample. split (df$any_column_name, SplitRatio = 0.7 ) train <- subset(df, sample == TRUE ) test <- subset(df, sample == FALSE )
วิธีที่ 3: ใช้แพ็คเกจ dplyr
library (dplyr) #make this example reproducible set. seeds (1) #create ID column df$id <- 1:nrow(df) #use 70% of dataset as training set and 30% as test set train <- df %>% dplyr::sample_frac( 0.70 ) test <- dplyr::anti_join(df, train, by = ' id ')
ตัวอย่างต่อไปนี้แสดงวิธีการใช้แต่ละวิธีในทางปฏิบัติกับ ชุดข้อมูลม่านตา ในตัวใน R
ตัวอย่างที่ 1: แบ่งข้อมูลออกเป็นชุดการฝึกอบรมและการทดสอบโดยใช้ Base R
รหัสต่อไปนี้แสดงวิธีใช้ฐาน R เพื่อแบ่งชุดข้อมูลม่านตาออกเป็นชุดการฝึกและการทดสอบ โดยใช้ 70% ของแถวเป็นชุดการฝึก และอีก 30% ที่เหลือเป็นชุดการทดสอบ:
#load iris dataset data(iris) #make this example reproducible set. seeds (1) #Use 70% of dataset as training set and remaining 30% as testing set sample <- sample(c( TRUE , FALSE ), nrow(iris), replace= TRUE , prob=c( 0.7 , 0.3 )) train <- iris[sample, ] test <- iris[!sample, ] #view dimensions of training set sun(train) [1] 106 5 #view dimensions of test set dim(test) [1] 44 5
จากผลลัพธ์เราจะเห็นได้ว่า:
- ชุดฝึกเป็นกรอบข้อมูล 106 แถว 5 คอลัมน์
- การทดสอบเป็นบล็อกข้อมูล 44 แถวและ 5 คอลัมน์
เนื่องจากฐานข้อมูลเดิมมีทั้งหมด 150 แถว ชุดการฝึกจึงมีประมาณ 106/150 = 70.6% ของแถวเดิม
นอกจากนี้เรายังสามารถแสดงสองสามแถวแรกของชุดการฝึกได้หากต้องการ:
#view first few rows of training set
head(train)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
8 5.0 3.4 1.5 0.2 setosa
9 4.4 2.9 1.4 0.2 setosa
ตัวอย่างที่ 2: แบ่งข้อมูลออกเป็นชุดการฝึกอบรมและการทดสอบโดยใช้ caTools
โค้ดต่อไปนี้แสดงวิธีใช้แพ็คเกจ caTools ใน R เพื่อแบ่งชุดข้อมูลม่านตาออกเป็นชุดการฝึกและการทดสอบ โดยใช้แถว 70% เป็นชุดการฝึก และอีก 30% ที่เหลือเป็นชุดการทดสอบ:
library (caTools) #load iris dataset data(iris) #make this example reproducible set. seeds (1) #Use 70% of dataset as training set and remaining 30% as testing set sample <- sample. split (iris$Species, SplitRatio = 0.7 ) train <- subset(iris, sample == TRUE ) test <- subset(iris, sample == FALSE ) #view dimensions of training set sun(train) [1] 105 5 #view dimensions of test set dim(test) [1] 45 5
จากผลลัพธ์เราจะเห็นได้ว่า:
- ชุดฝึกเป็นกรอบข้อมูล 105 แถว 5 คอลัมน์
- การทดสอบเป็นบล็อกข้อมูล 45 แถวและ 5 คอลัมน์
ตัวอย่างที่ 3: แบ่งข้อมูลออกเป็นชุดการฝึกอบรมและการทดสอบโดยใช้ dplyr
โค้ดต่อไปนี้แสดงวิธีใช้แพ็คเกจ caTools ใน R เพื่อแบ่งชุดข้อมูลม่านตาออกเป็นชุดการฝึกและการทดสอบ โดยใช้แถว 70% เป็นชุดการฝึก และอีก 30% ที่เหลือเป็นชุดการทดสอบ:
library (dplyr) #load iris dataset data(iris) #make this example reproducible set. seeds (1) #create variable ID iris$id <- 1:nrow(iris) #Use 70% of dataset as training set and remaining 30% as testing set train <- iris %>% dplyr::sample_frac( 0.7 ) test <- dplyr::anti_join(iris, train, by = ' id ') #view dimensions of training set sun(train) [1] 105 6 #view dimensions of test set dim(test) [1] 45 6
จากผลลัพธ์เราจะเห็นได้ว่า:
- ชุดฝึกเป็นกรอบข้อมูล 105 แถว 6 คอลัมน์
- การทดสอบเป็นบล็อกข้อมูล 45 แถวและ 6 คอลัมน์
โปรดทราบว่าชุดการฝึกอบรมและการทดสอบเหล่านี้มีคอลัมน์ “id” เพิ่มเติมที่เราสร้างขึ้น
ตรวจสอบให้แน่ใจว่าคุณไม่ได้ใช้คอลัมน์นี้ (หรือลบออกจากกรอบข้อมูลทั้งหมด) เมื่อปรับอัลกอริธึมแมชชีนเลิร์นนิง
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทั่วไปอื่นๆ ใน R:
วิธีการคำนวณ MSE ใน R
วิธีการคำนวณ RMSE ใน R
วิธีการคำนวณ R-squared ที่ปรับแล้วใน R