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

تطبيق خوارزمية AdaBoostRegressor في مكتبة Sklearn

Meezo ML

السؤال

Recommended Posts

  • 1

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)

 

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

  • 0

هو من الخوارزميات التي تعتمد على ناتج مجموعة من الخورزميات الأخرى مثل 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 والذي ينتج قيم أكثر دقة.

 

 

index.png

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...