أشجار القرار لحل مسائل الإنحدار مع كود البايثون

../_images/sphx_glr_plot_tree_regression_0011.png

يمكن أيضًا تطبيق خوارزمية أشجار القرار على مسائل الانحدار ، باستخدام الكلاس DecisionTreeRegressor. كما هو الحال في إعداد خوارزمية أشجار القرار للتصنيف ، ستأخذ الطريقة المناسبة المصفوفتان X و y كوسيط ، فقط في هذه الحالة من المتوقع أن يكون لـ y قيم فاصلة عائمة بدلاً من قيم صحيحة:

>> from sklearn import tree
>>> X = [[0, 0], [2, 2]]
>>> y = [0.5, 2.5]
>>> clf = tree.DecisionTreeRegressor()
>>> clf = clf.fit(X, y)
>>> clf.predict([[1, 1]])
array([0.5])

مثال عملي

في هذا المثال يتم إستخدم أشجار القرار لتلائم المنحنى الجيبي مع ملاحظة الأخذ بعين الإعتبار للقيم الشاذة. نتيجة لذلك ، يتعلم الانحدار الخطي المحلي الذي يقترب من منحنى الجيب.

يمكننا أن نلاحظ في الصورة أعلاه أنه إذا كان الحد الأقصى لعمق الشجرة (الذي يتم التحكم فيه بواسطة معلمة max_depth) مرتفعًا جدًا، فإن أشجار القرار تتعلم تفاصيل دقيقة جدًا لبيانات التي تدربت عليها وتتعلم أيضا من القيم الشاذه ، أي أنها تفرط في التعلم overfit.

 

 

في البداية نعمل على إستيراد المكتبات الضرورية لمحاكاة هذا النموذج
من أشهر مكتبات بايثون في التعامل مع المصفوقات numpy مكتبة 
من أشهر مكتبات بايثون في تحليل البيانات التنبؤية sklearn مكتبة 
من أشهر مكتبات بايثون في الرسومات البيانية matplotlib مكتبة 
 
import numpy as np
from sklearn.tree import DecisionTreeRegressor
import matplotlib.pyplot as plt

في هذا القسم أنشاءنا قاعدة بيانات عشوائية

rng = np.random.RandomState(1)
X = np.sort(5 * rng.rand(80, 1), axis=0)
y = np.sin(X).ravel()
y[::5] += 3 * (0.5 - rng.rand(16))

في هذا الجزء نعمل على ملائمة النموذج حيث نحدد عمق الشجرة و المدخلات و المخرجات

regr_1 = DecisionTreeRegressor(max_depth=2)
regr_2 = DecisionTreeRegressor(max_depth=5)
regr_1.fit(X, y)
regr_2.fit(X, y)

أما في هذا الجزء نعمل على توقع النتائج بناءا على النموذج
X_test لكن قبل ذلك لازم نحدد بيانات الاختبار 

X_test = np.arange(0.0, 5.0, 0.01)[:, np.newaxis]
y_1 = regr_1.predict(X_test)
y_2 = regr_2.predict(X_test)

أخيرا نرسم النتائج النهائية 

plt.figure()
plt.scatter(X, y, s=20, edgecolor="black",
            c="darkorange", label="data")
plt.plot(X_test, y_1, color="cornflowerblue",
         label="max_depth=2", linewidth=2)
plt.plot(X_test, y_2, color="yellowgreen", label="max_depth=5", linewidth=2)
plt.xlabel("data")
plt.ylabel("target")
plt.title("Decision Tree Regression")
plt.legend()
plt.show()

أتمنى يكون المقال القصير هذا أفادكم

المقال مترجم من موقع

scikit-learn.org

Share on facebook
فاسبوك
Share on twitter
تويتر
Share on linkedin
لينكد إن
Share on whatsapp
واتساب

اترك تعليقاً

المشاركات الاخيرة

أحدث التعليقات

أفحص بحثك بالمجان

رفع الملف