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

مفهوم ال KFold و تطبيقه باستخدام مكتبة scikit-learn

Meezo ML

السؤال

Recommended Posts

  • 1

هو أحد الطرق لتقسيم البيانات بدلا من استخدام train_test_split ويستخدم في حالة كانت البيانات قليلة.

import numpy as np
from sklearn.model_selection import KFold

قمنا باستدعاء المكتبة numpy لتشكيل داتا مزيفه
واستدعاء الوظيفه KFold من الوحدة model_selection في مكتبة sklearn
#تكوين داتا مزيفة مكونة من أرقام عشوائية:

X = np.random.random((1,15)).reshape((5, 3))
y = np.random.random((5,1))

في السطرين السابقين تم تشكيل X ,y كداتا مزيفه (أرقام عشوائيه )حيث X أبعادها 5 أسطر مع ثلاث أعمده وتحوي أرقام عشوائيه أما y عمود واحد بخمس أسطر وتحوي أرقام عشوائية
#تقسيم الداتا المزيفه إلى أجزاء :
لكن بداية سنعرض الصيغة العامة للتابع:

sklearn.model_selection.KFold(n_splits=5, shuffle=False, random_state=None)

الوظيفة KFold تأخذ البارمترات التالية:
البارمتر الأول n_splits عدد صحيح لتحديد عدد الأجزاء folds وهي افتراضية في sklearn من 3 إلى 5.
البارمتر الثاني shuffle متحول بولياني يأخذ True لكي يتم خلط الداتا قبل عملية التقسيم أي جعلها عشوائية ويأخذ False عندما لا نريد خلط الداتا.
randomstate: للتحكم بعملية الخلط. وقد تحدثت عنه في هذا الرابط:


الأن في مثالنا  تم تقسيم الداتا إلى 5 أجزاء مع خلط الداتا قبل عملية التقسيم.
وللوصول إلى كل جزء وما يحوية لديك الأسطر التالية حيث يتم استخدام اثنين من الاندكسات في الحلقة للمرور على التدريب والاختبار  وتحوي kf.split(X) هذه الاندكسات لكل محاولة من المحاولات يقصد بالمحاولات اي عملية التقسيم المختلفة التي ذكرناها سابقاً
بعد ذلك في كل مرور على الحلقة  يتم طباعة الاندكس الخاص بالتدريب والاختبار 
وبعد ذلك تم تخزين بيانات التدريب والاختبار وبعدها طباعة الابعاد لكل منها في كل محاولة.
# المثال:
 

#استدعاء المكتبات
import numpy as np
from sklearn.model_selection import KFold
#تكوين داتا مزيفة مكونة من أرقام عشوائية
X = np.random.random((1,15)).reshape((5, 3))
y = np.random.random((5,1))
#تقسيم الداتا المزيفه إلى أجزاء  
kf = KFold(n_splits=2, random_state=44, shuffle =True)
#KFold Data
for train_index, test_index in kf.split(X):
    print('Train Data is : \n', train_index)
    print('Test Data is  : \n', test_index)
    print('-------------------------------')
    X_train, X_test = X[train_index], X[test_index]
    y_train, y_test = y[train_index], y[test_index]
    print('X_train Shape is  ' , X_train.shape)
    print('X_test Shape is  ' , X_test.shape)
    print('y_train Shape is  ' ,y_train.shape)
    print('y_test Shape is  ' , y_test.shape)
    print('========================================')

 

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...