วิธีแยกข้อมูลในการฝึก & #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

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *