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

السؤال

Recommended Posts

  • 1
نشر (معدل)

يمكنك القيام بذلك عن طريق الموديول ensemble في مكتبة Sklearn.

BaggingClassifier(base_estimator=None, n_estimators=10,max_samples=1.0,
                  bootstrap=True, oob_score=False, n_jobs=None,
                  random_state=None, verbose=0)

base_estimator: ال estimator الأساسي الذي سيتم استخدامه لعمل fitting على مجموعات فرعية عشوائية من مجموعة البيانات. افتراضياً يكون DecisionTreeClassifier. أي إذا وضعت None. (يقبل object)
n_estimators: عدد ال estimator التي تريد أن يتم تطبيقها. افتراضياً 10.
bootstrap: لتحديد فيما ما إذا كان سيتم سحب العينات مع الاستبدال. إذا كان Flase، سيتم إجراء أخذ العينات بدون استبدال.
oob_score: لتحديد فيما إذا كان سيتم استخدام عينات out-of-bag لتقدير قيمة التعميم "generalization score". ويجب أن تكون bootstrap مضبوطة على True لاستخدامها.
n_jobs: عدد المهام التي يتم تنفيذها بالتوازي. -1 للتنفيذ بأقصى سرعة ممكنة.
random_state: يتحكم بعملية التقسيم افتراضياً يكون None.
verbose: يتحكم بال verbosity  أثناء التدريب والتنبؤ.
التوابع:
fit(data): للقيام بعملية التدريب.
predict(data): لتوقع القيم.
score(data):  لتقييم كفاءة النموذج.
predict_proba(data) : لعمل التوقع أيضاً لكن هنا سيخرج الفيمة الاحتمالية(أي لن يتم القصر على  عتبة)
apply(data):  ياتي لك بقيمة الورقة المحسوبة.
()get_n_leaves: يرد عدد الأوراق.
()get_depth: يرد عمق الشجرة.
ال attributtes:
classes_: لعرض ال labels التي وجدها.
n_outputs_: عدد المرخرجات الناتجة عن عملية ال fitting.
estimators_: عرض معلومات عن كل ال estimator التي تم تشكيلها.
base_estimator_:عرض معلومات ال estimator الأساسية.
n_features_: عدد الفيتشرز.
مثال:

from sklearn.ensemble import BaggingClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix
from sklearn.datasets import load_breast_cancer
import seaborn as sns
import matplotlib.pyplot as plt
# تحميل البيانات
Data = load_breast_cancer()
X = Data.data
y = Data.target
# تقسيم البيانات إلى عينات تدريب واختبار
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=44, shuffle =True)
# BaggingClassifier تطبيق 
clf = BaggingClassifier(n_estimators=150, random_state=444)
clf.fit(X_train, y_train)
# النتائج
print('BaggingClassifier Train Score is : ' , clf.score(X_train, y_train)) # BaggingClassifier Train Score is :  1.0
print('BaggingClassifier Test Score is : ' , clf.score(X_test, y_test))   # BaggingClassifier Test Score is :  0.0.9649122807017544
# عرض مصفوفة التشتت 
c = confusion_matrix(y_test, clf.predict(X_test))
print('Confusion Matrix is : \n', c)
#لرسم المصفوفة  
sns.heatmap(c, center = True)
plt.show()

 

تم التعديل في بواسطة Ali Haidar Ahmad
  • 1
نشر

لابد أنك تعلم أن ensemble techniques عموماً تعطي نتائج أفضل من إستخدام مصنف واحد لانها تعطي نتائج أكثر دقة و تتم بإستخدام طريقتين إما Averaging إيجاد القيمة المتوسطة لمجموعة من المصنفات، أو بإستخدام boosting وهي الطريقة التي تتم فيها إستخدام مصنفات بصورة متتالية وكل منها يقوم بإنقاص الbais في النموذج النهائي. من خوارزميات التي تعتمد على القيمة المتوسطة Bagging methods and Random Forest.

BaggingClassifier هي إحدي طرق ال bagging methods و التي تأخذ إما مصنف محدد من قبل المستخدم أو تقوم بإستخدام DecisionTreeClassifier كمصنف إفتراضي. لقد قام @Ali Haidar Ahmad بتغطية مثال BaggingClasifier بإستخدام المصنف الإفتراضي DecisionTreeClassifier و سأقوم بإعطاءك مثال بإستخدام SVC كمصنف و إنشاء البيانات عن طريق دالة make_classification التي تنشئ بيانات عشوائية لإستخدامها في عملية التصنيف:

from sklearn.svm import SVC
from sklearn.ensemble import BaggingClassifier
from sklearn.datasets import make_classification
X, y = make_classification(n_samples=100, n_features=4)
clf = BaggingClassifier(base_estimator=SVC(),n_estimators=10, max_samples=100)
clf = clf.fit(X, y)
clf.predict([[0, 0, 0, 0]])

أول ثلاثة سطور عبارة عن عمليات إستدعاء للدوال التي سنقوم بإستخدامها، تليها عملية توليد بيانات بإستخدام make_classification والتي تقوم بإنشاء 100 صف لعدد أربعة أعمدة تمثل خصائص البيانات أو ما يسمي ب features وذلك عن طريق تحديد القيمة 4 ل n_features.

و الان لنأتي لعملية إستخدام المصنف BaggingClassifier و التي تستقبل SVC كمصنف و تنشئ منه 10 مصنفات أخرى و التي تستخدم البيانات كاملة (max_samples=100) لعملية تدريب كل مصنف SVC النتيجة النهائية التي ينتجها كل مصنف تؤثر في القيمة النهائية لعملية الprediction.

بعد ذلك نقوم بتدريب clf و هو المصنف الذي يحتوى على المصنفات العشرة، و أخيراً عملية التوقع للمدخل [0,0,0,0] والذي يقوم بإعطاء الناتج في شكل قيمة واحدة إما صفر أو واحد (لاننا عرفنا y كمتغير به 100 قيمة كلها عبارة عن أصفار أو أحاد حسب الصنف للقيم X المدخلة).

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...