Meezo ML نشر 3 يوليو 2021 أرسل تقرير نشر 3 يوليو 2021 كيف نقوم بتطبيق خوارزمية AdaBoostRegressor في مكتبة Sklearn؟ اقتباس
1 Ali Haidar Ahmad نشر 3 يوليو 2021 أرسل تقرير نشر 3 يوليو 2021 AdaBoost "adaptive boosting" : فكرة هذه الخوارزمية أن وزن العينات المتوقعة بشكل سيئ بواسطة ال base_estimator السابق يزداد (وبالتالي يصبح أكثر أهمية)، بينما سينخفض وزن العينات المتوقعة بشكل جيد وهذه الأوزان تستخدم مرة أخرى لتدريب ال base_estimator التالي. و في كل تكرار، تتم إضافة learner ضعيف جديد، ولا يتم تحديد ال learner النهائي الأفضل حتى يتم الوصول إلى معدل خطأ صغير معين أو الانتهاء من التكرارات. يمكنك استخدامها عبر الموديول: sklearn.ensemble.AdaBoostRegressor الصيغة العامة: sklearn.ensemble.AdaBoostRegressor(base_estimator=None, n_estimators=50, learning_rate=1.0, loss='linear', random_state=None الوسطاء: base_estimator: ال estimator الأساسي الذي تبنى منه باقي المجموعة المعززة (boosted ensemble). افتراضياً None. ويفضل تركه none ليعطي أفضل النتائج في حال لم تكن لديك خبرة، افتراضياً يكون DecisionTreeRegressor. random_state: يتحكم بعملية التقسيم افتراضياً يكون None. n_estimators : عدد الخوارزميات أو ال estimator المستخدمة. default=50. learning_rate: مقدار معامل التعلم (حجم الخطوة)، ويأخذ فيمة من النمط float. loss: تابع التكلفة الذي يجب استخدامه عند تحديث الأوزان بعد كل تكرار معزز. ويمكن اختيار {‘linear’, ‘square’, ‘exponential’} وافتراضياً linear. Attributes: estimator_weights_: أوزان كل estimator تم تطبيقه. estimators_: عرض معلومات عن ال estimator التي تم تشكيلها. base_estimator_:عرض معلومات ال estimator الأساسية. estimator_errors_: خطأ التوقع في كل estimator من المجموعة المعززة. أهم التوابع: fit(data): للقيام بعملية التدريب. predict(data): لتوقع القيم. score(data): لتقييم كفاءة النموذج. مثال: # بيانات أسعار المنازل في مدينة بوسطن from sklearn.datasets import load_boston from sklearn.model_selection import train_test_split from sklearn.ensemble import AdaBoostRegressor # تحميل الداتا BostonData = load_boston() data = BostonData.data labels = BostonData.target # تقسيم البيانات X_train, X_test, y_train, y_test = train_test_split(data, labels, test_size=0.2, shuffle =True, random_state=2021) # DecisionTreeRegressor تطبيق Ada = AdaBoostRegressor(random_state=20) Ada.fit(X_train, y_train) #حساب الدقة print('Train Score is : ' , Ada.score(X_train, y_train)) print('Test Score is : ' , Ada.score(X_test, y_test)) #حعرض التوقعات y_pred = Ada.predict(X_test) print(y_pred) 1 اقتباس
0 ريم المهدي نشر 13 أغسطس 2021 أرسل تقرير نشر 13 أغسطس 2021 هو من الخوارزميات التي تعتمد على ناتج مجموعة من الخورزميات الأخرى مثل DecisionTreeRegressor وهو عبارة عن الخوارزمية الإفتراضية في هذه الحالة، هذه العملية تتم عن طريق تطبيق الخوارزمية المختارة او النموذج مثلا DecisionTreeRegressor أكثر من مرة على نفس البيانات، الفرق أنه في كل مرة يتدرب فيها النموذج يقوم بتعديل الأوزان حسب الخطأ الناتج من النموذج السابق. import numpy as np import matplotlib.pyplot as plt from sklearn.tree import DecisionTreeRegressor from sklearn.ensemble import AdaBoostRegressor # إنشاء مجموعة البيانات rng = np.random.RandomState(1) X = np.linspace(0, 6, 100)[:, np.newaxis] y = np.sin(X).ravel() + np.sin(6 * X).ravel() + rng.normal(0, 0.1, X.shape[0]) # إنشاء النماذج، الأول هو لشجرة القرارات و الثاني المعتمد على 300 نموذج شجرة قرارات regr_1 = DecisionTreeRegressor(max_depth=4) regr_2 = AdaBoostRegressor(DecisionTreeRegressor(max_depth=4), n_estimators=300, random_state=rng) # تدريب النموذجين regr_1.fit(X, y) regr_2.fit(X, y) # توقع نتائج النموذجين y_1 = regr_1.predict(X) y_2 = regr_2.predict(X) # عرض نتائج النموذجين لمعرفة الأفضل plt.figure() plt.scatter(X, y, c="k", label="training samples") plt.plot(X, y_1, c="g", label="n_estimators=1", linewidth=2) plt.plot(X, y_2, c="r", label="n_estimators=300", linewidth=2) plt.xlabel("data") plt.ylabel("target") plt.title("Boosted Decision Tree Regression") plt.legend() plt.show() ناتج تنفيذ البرنامج ينتج الشكل المرفق، لاحظ للإختلاف بإستخدام adaboostregressor والذي ينتج قيم أكثر دقة. اقتباس
السؤال
Meezo ML
كيف نقوم بتطبيق خوارزمية AdaBoostRegressor في مكتبة Sklearn؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.