اذهب إلى المحتوى
  • 0

تقسيم البيانات Data split باستخدام مكتبة scikit-learn

Meezo ML

السؤال

Recommended Posts

  • 1

يتم ذلك باستخدام التابع التالي:

sklearn.model_selection.train_test_split(data,label, test_size=None, train_size=None, random_state=None, shuffle=True)


يقوم التابع train_test_split بتقسيم البيانات إلى عينات تدريب وعينات اختبار.
data: تمثل مجموعة البيانات.
label: تمثل الفئات (classes).
test_size: لتحديد النسبة المئوية التي سيتم اقتطاعها من البيانات لاستخدامها كعينة اختبار. لو وضعنا 0.2، سيتم تخصيص 20% من البيانات للاستخدام كعينة اختبار.

train_size: لتحديد النسبة المئوية التي سيتم اقتطاعها من البيانات لاستخدامها كعينة تدريب.
random_state:  هذا الوسيط غامض لدى الكثيرين. إنه يتحكم بطريقة الخلط المطبقة على البيانات أي لتحديد نظام العشوائية ويأخذ قيمة من النمط  integer ويمكنك وضع أي قيمة تريدها، هذا الرقم يفهمه المترجم بطريقة معينة على أنه نمط معين للتقسيم.
لنفهم فائدة هذا الوسيط سأعطيك المثال التالي:
لنفرض أننا نعمل في فريق على مهمة تعلم آلة معينة.
في حال لم نستخدم random_state سوف يتم تقسيم البيانات على جهاز كل عضو من الفريق بطريقة مختلفة، أما إذا اخترنا جميعاً قيمة ثابتة ولتكن 44 فهذا يعني أن البيانات ستقسم بنفس الطريقة على جهاز كل عضو، ولو أعدنا التقسيم 1000 مرة سيكون نفسه.
وطريقة قسم البيانات مهمة فمثلاً إذا كانت عناصر مجموعة الاختبار a تختلف عن عناصر مجموعة الاختبار b، هذا سيؤدي إلى اختلاف ال score بين المجموعتين.
shuffle: لعمل خلط للبيانات قبل تقسيمها (أي بعثرة أو إعادة ترتيب العينات بشكل عشوائي). في حال وضعنا False لن تتم البعثرة (يفضل وضعها True دوماً).
الكود التالي يوضح العملية:

# سنقوم بتحميل الداتاسيت الخاصة بأسعار المنازل في مدينة يوسطن ونقوم بتقسيمها
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_boston

# تحميل الداتاسيت
BostonData = load_boston()
data = BostonData.data
label = BostonData.target
# عرض حجم الداتا 
print('The shape of data:',data.shape,'\n') # The shape of data: (506, 13)  أي لدينا 506 عينات

# تقسيم الداتا
X_train, X_test, y_train, y_test = train_test_split(data, label, test_size=0.2, random_state=44, shuffle =True)
# لاحظ أننا حددنا 20 بالمئة كعينة اختبار وبالتالي سيتم اعتبار الباقي عينة تدريب تلقائياً

# عرض حجم البيانات بعد التقسيم
print('The shape of X_train:',X_train.shape) # The shape of X_train: (354, 13)
print('The shape of X_test:',X_test.shape)    # The shape of X_test: (152, 13)
print('The shape of y_train:',y_train.shape)  # The shape of y_train: (354,)
print('The shape of y_test:',y_test.shape)    # The shape of y_test: (152,)

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...