كيفية إنشاء مجموعة قطار واختبار من pandas dataframe
عند ملاءمة نماذج التعلم الآلي لمجموعات البيانات، غالبًا ما نقوم بتقسيم مجموعة البيانات إلى مجموعتين:
1. مجموعة التدريب: تستخدم لتدريب النموذج (70-80% من مجموعة البيانات الأصلية)
2. مجموعة الاختبار: تستخدم للحصول على تقدير غير متحيز لأداء النموذج (20-30% من مجموعة البيانات الأصلية)
في بايثون، هناك طريقتان شائعتان لتقسيم إطار بيانات الباندا إلى مجموعة تدريب ومجموعة اختبار:
الطريقة الأولى: استخدام Train_test_split() الخاص بـ sklearn
from sklearn. model_selection import train_test_split train, test = train_test_split(df, test_size= 0.2 , random_state= 0 )
الطريقة الثانية: استخدام Sample() من الباندا
train = df. sample (frac= 0.8 , random_state= 0 ) test = df. drop ( train.index )
توضح الأمثلة التالية كيفية استخدام كل طريقة مع الباندا DataFrame التالية:
import pandas as pd import numpy as np #make this example reproducible n.p. random . seeds (1) #create DataFrame with 1,000 rows and 3 columns df = pd. DataFrame ( {' x1 ': np.random.randint (30,size=1000), ' x2 ': np. random . randint (12, size=1000), ' y ': np. random . randint (2, size=1000)}) #view first few rows of DataFrame df. head () x1 x2 y 0 5 1 1 1 11 8 0 2 12 4 1 3 8 7 0 4 9 0 0
مثال 1: استخدم Train_test_split() من sklearn
يوضح التعليمة البرمجية التالية كيفية استخدام وظيفة Train_test_split() الخاصة بـ sklearn لتقسيم Pandas DataFrame إلى مجموعات تدريب واختبار:
from sklearn. model_selection import train_test_split #split original DataFrame into training and testing sets train, test = train_test_split(df, test_size= 0.2 , random_state= 0 ) #view first few rows of each set print ( train.head ()) x1 x2 y 687 16 2 0 500 18 2 1 332 4 10 1 979 2 8 1 817 11 1 0 print ( test.head ()) x1 x2 y 993 22 1 1 859 27 6 0 298 27 8 1 553 20 6 0 672 9 2 1 #print size of each set print (train. shape , test. shape ) (800, 3) (200, 3)
من النتيجة يمكننا أن نرى أنه تم إنشاء مجموعتين:
- مجموعة التدريب: 800 صف و3 أعمدة
- مجموعة الاختبار: 200 صف و3 أعمدة
لاحظ أن test_size يتحكم في النسبة المئوية للملاحظات من DataFrame الأصلي التي ستنتمي إلى مجموعة الاختبار وأن قيمة Random_state تجعل الانقسام قابلاً للتكرار.
المثال 2: استخدم Sample() من الباندا
يوضح التعليمة البرمجية التالية كيفية استخدام وظيفة pandas Sample() لتقسيم Pandas DataFrame إلى مجموعات تدريب واختبار:
#split original DataFrame into training and testing sets train = df. sample (frac= 0.8 , random_state= 0 ) test = df. drop ( train.index ) #view first few rows of each set print ( train.head ()) x1 x2 y 993 22 1 1 859 27 6 0 298 27 8 1 553 20 6 0 672 9 2 1 print ( test.head ()) x1 x2 y 9 16 5 0 11 12 10 0 19 5 9 0 23 28 1 1 28 18 0 1 #print size of each set print (train. shape , test. shape ) (800, 3) (200, 3)
من النتيجة يمكننا أن نرى أنه تم إنشاء مجموعتين:
- مجموعة التدريب: 800 صف و3 أعمدة
- مجموعة الاختبار: 200 صف و3 أعمدة
لاحظ أن frac يتحكم في النسبة المئوية للملاحظات من DataFrame الأصلي الذي سينتمي إلى مجموعة التدريب وأن قيمة Random_state تجعل الانقسام قابلاً للتكرار.
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في بايثون:
كيفية تنفيذ الانحدار اللوجستي في بايثون
كيفية إنشاء مصفوفة الارتباك في بايثون
كيفية حساب الدقة المتوازنة في بايثون