.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/miscellaneous/plot_partial_dependence_visualization_api.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note Click :ref:`here ` to download the full example code or to run this example in your browser via Binder .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_examples_miscellaneous_plot_partial_dependence_visualization_api.py: ========================================= Advanced Plotting With Partial Dependence ========================================= The :func:`~sklearn.inspection.plot_partial_dependence` function returns a :class:`~sklearn.inspection.PartialDependenceDisplay` object that can be used for plotting without needing to recalculate the partial dependence. In this example, we show how to plot partial dependence plots and how to quickly customize the plot with the visualization API. .. note:: See also :ref:`sphx_glr_auto_examples_miscellaneous_plot_roc_curve_visualization_api.py` .. GENERATED FROM PYTHON SOURCE LINES 16-28 .. code-block:: default print(__doc__) import pandas as pd import matplotlib.pyplot as plt from sklearn.datasets import load_diabetes from sklearn.neural_network import MLPRegressor from sklearn.preprocessing import StandardScaler from sklearn.pipeline import make_pipeline from sklearn.tree import DecisionTreeRegressor from sklearn.inspection import plot_partial_dependence .. GENERATED FROM PYTHON SOURCE LINES 29-34 Train models on the diabetes dataset ================================================ First, we train a decision tree and a multi-layer perceptron on the diabetes dataset. .. GENERATED FROM PYTHON SOURCE LINES 34-46 .. code-block:: default 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) .. raw:: html
Pipeline(steps=[('standardscaler', StandardScaler()),
                    ('mlpregressor',
                     MLPRegressor(hidden_layer_sizes=(100, 100), max_iter=500,
                                  random_state=0, tol=0.01))])
StandardScaler()
MLPRegressor(hidden_layer_sizes=(100, 100), max_iter=500, random_state=0,
                 tol=0.01)


.. GENERATED FROM PYTHON SOURCE LINES 47-55 Plotting partial dependence for two features ============================================ We plot partial dependence curves for features "age" and "bmi" (body mass index) for the decision tree. With two features, :func:`~sklearn.inspection.plot_partial_dependence` expects to plot two curves. Here the plot function place a grid of two plots using the space defined by `ax` . .. GENERATED FROM PYTHON SOURCE LINES 55-59 .. code-block:: default fig, ax = plt.subplots(figsize=(12, 6)) ax.set_title("Decision Tree") tree_disp = plot_partial_dependence(tree, X, ["age", "bmi"], ax=ax) .. image:: /auto_examples/miscellaneous/images/sphx_glr_plot_partial_dependence_visualization_api_001.png :alt: Decision Tree :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 60-64 The partial depdendence curves can be plotted for the multi-layer perceptron. In this case, `line_kw` is passed to :func:`~sklearn.inspection.plot_partial_dependence` to change the color of the curve. .. GENERATED FROM PYTHON SOURCE LINES 64-69 .. code-block:: default fig, ax = plt.subplots(figsize=(12, 6)) ax.set_title("Multi-layer Perceptron") mlp_disp = plot_partial_dependence(mlp, X, ["age", "bmi"], ax=ax, line_kw={"color": "red"}) .. image:: /auto_examples/miscellaneous/images/sphx_glr_plot_partial_dependence_visualization_api_002.png :alt: Multi-layer Perceptron :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 70-87 Plotting partial dependence of the two models together ====================================================== The `tree_disp` and `mlp_disp` :class:`~sklearn.inspection.PartialDependenceDisplay` objects contain all the computed information needed to recreate the partial dependence curves. This means we can easily create additional plots without needing to recompute the curves. One way to plot the curves is to place them in the same figure, with the curves of each model on each row. First, we create a figure with two axes within two rows and one column. The two axes are passed to the :func:`~sklearn.inspection.PartialDependenceDisplay.plot` functions of `tree_disp` and `mlp_disp`. The given axes will be used by the plotting function to draw the partial dependence. The resulting plot places the decision tree partial dependence curves in the first row of the multi-layer perceptron in the second row. .. GENERATED FROM PYTHON SOURCE LINES 87-94 .. code-block:: default 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") .. image:: /auto_examples/miscellaneous/images/sphx_glr_plot_partial_dependence_visualization_api_003.png :alt: Decision Tree, Multi-layer Perceptron :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out Out: .. code-block:: none Text(0.5, 1.0, 'Multi-layer Perceptron') .. GENERATED FROM PYTHON SOURCE LINES 95-100 Another way to compare the curves is to plot them on top of each other. Here, we create a figure with one row and two columns. The axes are passed into the :func:`~sklearn.inspection.PartialDependenceDisplay.plot` function as a list, which will plot the partial dependence curves of each model on the same axes. The length of the axes list must be equal to the number of plots drawn. .. GENERATED FROM PYTHON SOURCE LINES 100-108 .. code-block:: default 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() .. image:: /auto_examples/miscellaneous/images/sphx_glr_plot_partial_dependence_visualization_api_004.png :alt: plot partial dependence visualization api :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out Out: .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 110-116 `tree_disp.axes_` is a numpy array container the axes used to draw the partial dependence plots. This can be passed to `mlp_disp` to have the same affect of drawing the plots on top of each other. Furthermore, the `mlp_disp.figure_` stores the figure, which allows for resizing the figure after calling `plot`. In this case `tree_disp.axes_` has two dimensions, thus `plot` will only show the y label and y ticks on the left most plot. .. GENERATED FROM PYTHON SOURCE LINES 116-125 .. code-block:: default 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() .. image:: /auto_examples/miscellaneous/images/sphx_glr_plot_partial_dependence_visualization_api_005.png :alt: plot partial dependence visualization api :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 126-132 Plotting partial dependence for one feature =========================================== Here, we plot the partial dependence curves for a single feature, "age", on the same axes. In this case, `tree_disp.axes_` is passed into the second plot function. .. GENERATED FROM PYTHON SOURCE LINES 132-136 .. code-block:: default tree_disp = plot_partial_dependence(tree, X, ["age"]) mlp_disp = plot_partial_dependence(mlp, X, ["age"], ax=tree_disp.axes_, line_kw={"color": "red"}) .. image:: /auto_examples/miscellaneous/images/sphx_glr_plot_partial_dependence_visualization_api_006.png :alt: plot partial dependence visualization api :class: sphx-glr-single-img .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 4.869 seconds) .. _sphx_glr_download_auto_examples_miscellaneous_plot_partial_dependence_visualization_api.py: .. only :: html .. container:: sphx-glr-footer :class: sphx-glr-footer-example .. container:: binder-badge .. image:: images/binder_badge_logo.svg :target: https://mybinder.org/v2/gh/scikit-learn/scikit-learn/0.24.X?urlpath=lab/tree/notebooks/auto_examples/miscellaneous/plot_partial_dependence_visualization_api.ipynb :alt: Launch binder :width: 150 px .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_partial_dependence_visualization_api.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_partial_dependence_visualization_api.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_