Partial dependence plots.
The ``len(features)`` plots are arranged in a grid with ``n_cols`` columns. Two-way partial dependence plots are plotted as contour plots. The deciles of the feature values will be shown with tick marks on the x-axes for one-way plots, and on both axes for two-way plots.
.. note::
:func:`plot_partial_dependence` does not support using the same axes with multiple calls. To plot the the partial dependence for multiple estimators, please pass the axes created by the first call to the second call::
>>> from sklearn.inspection import plot_partial_dependence >>> from sklearn.datasets import make_friedman1 >>> from sklearn.linear_model import LinearRegression >>> X, y = make_friedman1() >>> est = LinearRegression().fit(X, y) >>> disp1 = plot_partial_dependence(est, X) # doctest: +SKIP >>> disp2 = plot_partial_dependence(est, X, ... ax=disp1.axes_) # doctest: +SKIP
Read more in the :ref:`User Guide <partial_dependence>`.
Parameters ---------- estimator : BaseEstimator A fitted estimator object implementing :term:`predict`, :term:`predict_proba`, or :term:`decision_function`. Multioutput-multiclass classifiers are not supported.
X : array-like or dataframe
of shape (n_samples, n_features) The data to use to build the grid of values on which the dependence will be evaluated. This is usually the training data.
features : list of nt, str, pair of int, pair of str The target features for which to create the PDPs. If featuresi
is an int or a string, a one-way PDP is created; if featuresi
is a tuple, a two-way PDP is created. Each tuple must be of size 2. if any entry is a string, then it must be in ``feature_names``.
feature_names : array-like of shape (n_features,), dtype=str, default=None Name of each feature; feature_namesi
holds the name of the feature with index i. By default, the name of the feature corresponds to their numerical index for NumPy array and their column name for pandas dataframe.
target : int, optional (default=None)
- In a multiclass setting, specifies the class for which the PDPs should be computed. Note that for binary classification, the positive class (index 1) is always used.
- In a multioutput setting, specifies the task for which the PDPs should be computed.
Ignored in binary classification or classical regression settings.
response_method : 'auto', 'predict_proba' or 'decision_function', optional (default='auto') Specifies whether to use :term:`predict_proba` or :term:`decision_function` as the target response. For regressors this parameter is ignored and the response is always the output of :term:`predict`. By default, :term:`predict_proba` is tried first and we revert to :term:`decision_function` if it doesn't exist. If ``method`` is 'recursion', the response is always the output of :term:`decision_function`.
n_cols : int, optional (default=3) The maximum number of columns in the grid plot. Only active when `ax` is a single axis or `None`.
grid_resolution : int, optional (default=100) The number of equally spaced points on the axes of the plots, for each target feature.
percentiles : tuple of float, optional (default=(0.05, 0.95)) The lower and upper percentile used to create the extreme values for the PDP axes. Must be in 0, 1
.
method : str, optional (default='auto') The method to use to calculate the partial dependence predictions:
- 'recursion' is only supported for gradient boosting estimator (namely :class:`GradientBoostingClassifier<sklearn.ensemble.GradientBoostingClassifier>`, :class:`GradientBoostingRegressor<sklearn.ensemble.GradientBoostingRegressor>`, :class:`HistGradientBoostingClassifier<sklearn.ensemble.HistGradientBoostingClassifier>`, :class:`HistGradientBoostingRegressor<sklearn.ensemble.HistGradientBoostingRegressor>`) but is more efficient in terms of speed. With this method, ``X`` is optional and is only used to build the grid and the partial dependences are computed using the training data. This method does not account for the ``init`` predictor of the boosting process, which may lead to incorrect values (see warning below. With this method, the target response of a classifier is always the decision function, not the predicted probabilities.
- 'brute' is supported for any estimator, but is more computationally intensive.
- 'auto':
- 'recursion' is used for estimators that supports it.
- 'brute' is used for all other estimators.
n_jobs : int, optional (default=None) The number of CPUs to use to compute the partial dependences. ``None`` means 1 unless in a :obj:`joblib.parallel_backend` context. ``-1`` means using all processors. See :term:`Glossary <n_jobs>` for more details.
verbose : int, optional (default=0) Verbose output during PD computations.
fig : Matplotlib figure object, optional (default=None) A figure object onto which the plots will be drawn, after the figure has been cleared. By default, a new one is created.
.. deprecated:: 0.22 ``fig`` will be removed in 0.24.
line_kw : dict, optional Dict with keywords passed to the ``matplotlib.pyplot.plot`` call. For one-way partial dependence plots.
contour_kw : dict, optional Dict with keywords passed to the ``matplotlib.pyplot.contourf`` call. For two-way partial dependence plots.
ax : Matplotlib axes or array-like of Matplotlib axes, default=None
- If a single axis is passed in, it is treated as a bounding axes and a grid of partial dependence plots will be drawn within these bounds. The `n_cols` parameter controls the number of columns in the grid.
- If an array-like of axes are passed in, the partial dependence plots will be drawn directly into these axes.
- If `None`, a figure and a bounding axes is created and treated as the single axes case.
.. versionadded:: 0.22
Returns ------- display: :class:`~sklearn.inspection.PartialDependenceDisplay`
Examples -------- >>> from sklearn.datasets import make_friedman1 >>> from sklearn.ensemble import GradientBoostingRegressor >>> X, y = make_friedman1() >>> clf = GradientBoostingRegressor(n_estimators=10).fit(X, y) >>> plot_partial_dependence(clf, X, 0, (0, 1)
) #doctest: +SKIP
See also -------- sklearn.inspection.partial_dependence: Return raw partial dependence values
Warnings -------- The 'recursion' method only works for gradient boosting estimators, and unlike the 'brute' method, it does not account for the ``init`` predictor of the boosting process. In practice this will produce the same values as 'brute' up to a constant offset in the target response, provided that ``init`` is a consant estimator (which is the default). However, as soon as ``init`` is not a constant estimator, the partial dependence values are incorrect for 'recursion'. This is not relevant for :class:`HistGradientBoostingClassifier <sklearn.ensemble.HistGradientBoostingClassifier>` and :class:`HistGradientBoostingRegressor <sklearn.ensemble.HistGradientBoostingRegressor>`, which do not have an ``init`` parameter.