كيفية تقسيم البيانات في التدريب & #038; مجموعات الاختبار في r (3 طرق)


في كثير من الأحيان، عندما نقوم بتكييف خوارزميات التعلم الآلي مع مجموعات البيانات، نقوم أولاً بتقسيم مجموعة البيانات إلى مجموعة تدريب ومجموعة اختبار.

هناك ثلاث طرق شائعة لتقسيم البيانات إلى مجموعات تدريب واختبار في R:

الطريقة الأولى: استخدم 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, ]

الطريقة الثانية: استخدم حزمة 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 )

الطريقة الثالثة: استخدم حزمة 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 أعمدة.

لاحظ أن مجموعات التدريب والاختبار هذه تحتوي على عمود “المعرف” الإضافي الذي قمنا بإنشائه.

تأكد من عدم استخدام هذا العمود (أو إزالته من إطارات البيانات بالكامل) عند ضبط خوارزمية التعلم الآلي.

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية تنفيذ العمليات الشائعة الأخرى في R:

كيفية حساب MSE في R
كيفية حساب RMSE في R
كيفية حساب R-squared المعدل في R

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *