Meezo ML نشر 24 يونيو 2021 أرسل تقرير نشر 24 يونيو 2021 كيف نقوم بتقسيم البيانات باستخدام ShuffleSplit في مكتبة Sklearn، وكيف يتم الأمر؟ اقتباس
1 Ali Haidar Ahmad نشر 24 يونيو 2021 أرسل تقرير نشر 24 يونيو 2021 تقوم على تحديد عدد معين من التقسيمات وفي كل تقسيمة يتم اختيار نسبة معينة من البيانات عشوائياً للاستخدام كعينة اختبار والباقي للتدريب. سأقوم بتطبيقه على نموذج تصنيف لكي تعرف كيفية تطبيقه بسكل عملي: from sklearn.model_selection import ShuffleSplit from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import accuracy_score from sklearn.datasets import make_blobs # إنشاء داتاسيت مزيفة ب10 عينات و3 فئات X, y = make_blobs(n_samples=10, random_state=2021) # y=array([1, 1, 2, 0, 1, 2, 0, 2, 0, 0]) # ShuffleSplit إنشاء كائن من الكلاس # حددنا عدد التقسيمات ب 5 وهو العدد الافتراضي # وحددنا حجم عينة الاحتبار ب20 في المئة cv = ShuffleSplit(n_splits=5, test_size=0.2, random_state=0) # لتخزين النتائج من كل تقسيمة y_true, y_pred = list(), list() # عدد التقسيمات sp=cv.get_n_splits(X) # عملية التقسيم for train_ix, test_ix in cv.split(X): # تقسيم البيانات X_train, X_test = X[train_ix, :], X[test_ix, :] y_train, y_test = y[train_ix], y[test_ix] # تدريب النموذج model = RandomForestClassifier(random_state=44) model.fit(X_train, y_train) # توقع النموذج yhat = model.predict(X_test) # تخزين النتيجة for i in range(0,len(y_test)): y_true.append(y_test[i]) y_pred.append(yhat[i]) # حساب الدقة acc = accuracy_score(y_true, y_pred) print('Accuracy: %.3f' % acc)# Accuracy: 1.000 لاحظ كيف أنه قمنا بتحديد عدد معين من التقسيمات وهو 5 وحددنا نسبة مئوية للعينات التي سيتم استخدامها للاختبار في كل تقسيمة وهو 20%، ثم أدرب النموذج على بيانات التدريب وأقوم بحساب القيمة المتوقعة على عينات الاختبار وأضعها في y_pred وأضع القيم الحقيقية المقابلة لها في y_true, وهكذا بالنسبة لبقية التقسيمات حتى ننتهي وبعدها أقوم بحساب دقة النموذج. 1 اقتباس
0 ريم المهدي نشر 30 يونيو 2021 أرسل تقرير نشر 30 يونيو 2021 هي أحد الخوارزميات التي تقوم بإختيار بعض من التباديل الممكنة لمجموعة بيانات و تقسيمها لعمليات تدريب و إختبار النموذج، بذلك فهي أحد خوارزميات الCross_validation. اقتباس على عكس خوارزميات الcorss_validation الأخرى فshufflesplit لا تضمن الإختلاف في البيانات المختارة، فهي تعتمد على الإختيار العشوائي، و الذي يمكن أن يكون ممكن في حالة مجموعة البيانات الصغيرة. تعتمد shufflesplit على 4 مدخلات تتحكم في البيانات المقسمة: n_splits عدد التقسيمات test_size نسبة بيانات الإختبار (0.1%) كقيمة إفتراضية إذا لم يتم تحديدها. train_size باقي نسبة الإختبار. random_state قيمة رقمية للتحكم في إنتاج نفس البيانات كل مرة. import numpy as np from sklearn.model_selection import ShuffleSplit X = np.array([[1, 2], [3, 4], [5, 6], [7, 8], [3, 4], [5, 6]]) y = np.array([1, 2, 1, 2, 1, 2]) rs = ShuffleSplit(n_splits=2, test_size=.25, random_state=0) #rs = ShuffleSplit(n_splits=200, test_size=.25, random_state=0) #rs = ShuffleSplit(n_splits=5, train_size=0.5, test_size=.75,random_state=0) for train_index, test_index in rs.split(X): print("TRAIN:", train_index, "TEST:", test_index) لاحظ البرنامج أعلاه و الذي يقوم بتقسيم البيانات بإستخدام sufflesplit و إخراج عينتين تمثلان مؤشرات البيانات لكل من التدريب و الإختبار مقسمة بنسبة 75% و 25% على التوالي، لاحظ أن ربع البيانات المدخلة الكلية 1.5 من أصل 6 عينات، لكن تم إخراج مؤشرين. TRAIN: [1 3 0 4] TEST: [5 2] TRAIN: [4 0 2 5] TEST: [1 3] يمكنك أيضاً تفعيل السطر 6 و 7 لترى الناتج، لابد أن تعلم أن shufflesplit تعطي الخطأ التالي في حال كان مجموع نسب التدريب و الإختبار أعلى من 1. ValueError: The sum of test_size and train_size = 1.25, should be in the (0, 1) range. Reduce test_size and/or train_size. اقتباس
السؤال
Meezo ML
كيف نقوم بتقسيم البيانات باستخدام ShuffleSplit في مكتبة Sklearn، وكيف يتم الأمر؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.