أستخدام خوارزمية أشجار القرار Decision Trees لحل مسائل الانحدار Regression بلغة Python

يمكن تطبيق خوارزمية أشجار القرار على مشاكل الانحدار Regression ، باستخدام مصنف DecisionTreeRegressor.

كما هو الحال في إعدادات التصنيف classification، ستأخذ طريقة الملاءمة ك argument arrays (مصفوفات وسيطة)  X و y ، إلا أنه في هذه الحالة من المتوقع أن تحتوي y على قيم فاصلة عائمة بدلاً floating point values من القيم الصحيحة integer values:

../_images/sphx_glr_plot_tree_regression_0011.png

>>> 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])

مثال عملي لحل مسائل الانحدار بإستخدام خوارزمية Decision Tree Regression أشجار القرار بلغة البايثون

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

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

# استيراد النماذج و المكتبات الضرورية
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 = 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()

 

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

اترك تعليقاً

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

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

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

رفع الملف