الرسم المتقدم باستخدام الاعتمادية الجزئية#

يمكن استخدام كائن PartialDependenceDisplay للرسم دون الحاجة إلى إعادة حساب الاعتمادية الجزئية. في هذا المثال، نوضح كيفية رسم مخططات الاعتمادية الجزئية وكيفية تخصيص المخطط بسرعة باستخدام واجهة برمجة التطبيقات (API) للتصور.

# المؤلفون: مطوري scikit-learn
# معرف SPDX-License: BSD-3-Clause

import matplotlib.pyplot as plt
import pandas as pd

from sklearn.datasets import load_diabetes
from sklearn.inspection import PartialDependenceDisplay
from sklearn.neural_network import MLPRegressor
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.tree import DecisionTreeRegressor

تدريب النماذج على مجموعة بيانات مرض السكري#

أولاً، نقوم بتدريب شجرة قرار وشبكة عصبية متعددة الطبقات على مجموعة بيانات مرض السكري.

diabetes = load_diabetes()
X = pd.DataFrame(diabetes.data, columns=diabetes.feature_names)
y = diabetes.target

tree = DecisionTreeRegressor()
mlp = make_pipeline(
    StandardScaler(),
    MLPRegressor(hidden_layer_sizes=(100, 100), tol=1e-2, max_iter=500, random_state=0),
)
tree.fit(X, y)
mlp.fit(X, y)
/project/workspace/sklearn/neural_network/_multilayer_perceptron.py:691: ConvergenceWarning:

Stochastic Optimizer: Maximum iterations (500) reached and the optimization hasn't converged yet.
Pipeline(steps=[('standardscaler', StandardScaler()),
                ('mlpregressor',
                 MLPRegressor(hidden_layer_sizes=(100, 100), max_iter=500,
                              random_state=0, tol=0.01))])
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.


رسم الاعتمادية الجزئية لميزتين#

نرسم منحنيات الاعتمادية الجزئية للميزتين "العمر" و"مؤشر كتلة الجسم" لشجرة القرار. مع ميزتين، from_estimator يتوقع رسم منحنيين. هنا تقوم دالة الرسم بوضع شبكة من مخططين باستخدام المساحة المحددة بواسطة ax .

fig, ax = plt.subplots(figsize=(12, 6))
ax.set_title("Decision Tree")
tree_disp = PartialDependenceDisplay.from_estimator(tree, X, ["age", "bmi"], ax=ax)
Decision Tree

يمكن رسم منحنيات الاعتمادية الجزئية للشبكة العصبية متعددة الطبقات. في هذه الحالة، يتم تمرير line_kw إلى from_estimator لتغيير لون المنحنى.

fig, ax = plt.subplots(figsize=(12, 6))
ax.set_title("Multi-layer Perceptron")
mlp_disp = PartialDependenceDisplay.from_estimator(
    mlp, X, ["age", "bmi"], ax=ax, line_kw={"color": "red"}
)
Multi-layer Perceptron

رسم الاعتمادية الجزئية للنموذجين معًا#

تحتوي كائنات tree_disp و`mlp_disp` PartialDependenceDisplay على جميع المعلومات المحسوبة اللازمة لإعادة إنشاء منحنيات الاعتمادية الجزئية. هذا يعني أنه يمكننا بسهولة إنشاء مخططات إضافية دون الحاجة إلى إعادة حساب المنحنيات.

إحدى طرق رسم المنحنيات هي وضعها في نفس الشكل، مع منحنيات كل نموذج في كل صف. أولاً، نقوم بإنشاء شكل مع محورين داخل صفين وعمود واحد. يتم تمرير المحورين إلى plot وظائف tree_disp و`mlp_disp`. سيتم استخدام المحاور المعطاة بواسطة دالة الرسم لرسم الاعتمادية الجزئية. يضع المخطط الناتج منحنيات الاعتمادية الجزئية لشجرة القرار في الصف الأول من الشبكة العصبية متعددة الطبقات في الصف الثاني.

fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 10))
tree_disp.plot(ax=ax1)
ax1.set_title("Decision Tree")
mlp_disp.plot(ax=ax2, line_kw={"color": "red"})
ax2.set_title("Multi-layer Perceptron")
Decision Tree, Multi-layer Perceptron
Text(0.5, 1.0, 'Multi-layer Perceptron')

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

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 6))
tree_disp.plot(ax=[ax1, ax2], line_kw={"label": "Decision Tree"})
mlp_disp.plot(
    ax=[ax1, ax2], line_kw={"label": "Multi-layer Perceptron", "color": "red"}
)
ax1.legend()
ax2.legend()
plot partial dependence visualization api
<matplotlib.legend.Legend object at 0x7fe49c608130>

tree_disp.axes_ هو حاوية مصفوفة numpy للمحاور المستخدمة لرسم مخططات الاعتمادية الجزئية. يمكن تمرير هذا إلى mlp_disp للحصول على نفس تأثير رسم المخططات فوق بعضها البعض. علاوة على ذلك، فإن mlp_disp.figure_ يحفظ الشكل، مما يسمح بتغيير حجم الشكل بعد استدعاء plot. في هذه الحالة، يكون لـ tree_disp.axes_ بعدين، وبالتالي لن تعرض الدالة plot سوى تسمية المحور y وعلامات المحور y على المخطط الأيسر.

tree_disp.plot(line_kw={"label": "Decision Tree"})
mlp_disp.plot(
    line_kw={"label": "Multi-layer Perceptron", "color": "red"}, ax=tree_disp.axes_
)
tree_disp.figure_.set_size_inches(10, 6)
tree_disp.axes_[0, 0].legend()
tree_disp.axes_[0, 1].legend()
plt.show()
plot partial dependence visualization api

رسم الاعتمادية الجزئية لميزة واحدة#

هنا، نرسم منحنيات الاعتمادية الجزئية لميزة واحدة، "العمر"، على نفس المحاور. في هذه الحالة، يتم تمرير tree_disp.axes_ إلى دالة الرسم الثانية.

tree_disp = PartialDependenceDisplay.from_estimator(tree, X, ["age"])
mlp_disp = PartialDependenceDisplay.from_estimator(
    mlp, X, ["age"], ax=tree_disp.axes_, line_kw={"color": "red"}
)
plot partial dependence visualization api

Total running time of the script: (0 minutes 3.025 seconds)

Related examples

مخططات التبعية الجزئية والتوقع الشرطي الفردي

مخططات التبعية الجزئية والتوقع الشرطي الفردي

القيود الرتيبة

القيود الرتيبة

استخدام KBinsDiscretizer لتقسيم الخصائص المستمرة

استخدام KBinsDiscretizer لتقسيم الخصائص المستمرة

منحنى الخطأ الكشف (DET)

منحنى الخطأ الكشف (DET)

Gallery generated by Sphinx-Gallery