Spec-Zone.ru › scikit-learn

PartialDependenceDisplay

classsklearn.inspection.PartialDependenceDisplay(pd_results, *, features, feature_names, target_idx, deciles, kind='average', subsample=1000, random_state=None, is_categorical=None)[исходный код]

График частичной зависимости (PDP) и индивидуального условного ожидания (ICE).

Для создания PartialDependenceDisplay рекомендуется использовать from_estimator. Все параметры сохраняются в виде атрибутов.

Общие сведения об инструментах визуализации scikit-learn см. в руководстве по визуализации. Рекомендации по интерпретации этих графиков см. в руководстве по анализу моделей.

Пример использования этого класса см. в следующем примере: Расширенное построение графиков частичной зависимости.

Добавлено в версии 0.22.

Параметры:
pd_resultslist of Bunch

Результаты partial_dependence для features.

featureslist of (int,) or list of (int, int)

Индексы признаков для заданного графика. Кортеж из одного целого числа задаёт построение кривой частичной зависимости для одного признака. Кортеж из двух целых чисел задаёт построение двумерной кривой частичной зависимости в виде контурного графика.

feature_nameslist of str

Названия признаков, соответствующие индексам в features.

target_idxint
  • В задаче многоклассовой классификации задаёт класс, для которого следует вычислить PDP. Обратите внимание, что в случае бинарной классификации всегда используется положительный класс (индекс 1).
  • В задаче с несколькими выходами задаёт целевую задачу, для которой следует вычислить PDP.

Не используется в задачах бинарной классификации и обычной регрессии.

decilesdict

Децили для индексов признаков в features.

kind{‘average’, ‘individual’, ‘both’} or list of such str, default=’average’

Определяет, следует ли строить частичную зависимость, усреднённую по всем образцам набора данных, отдельную линию для каждого образца или оба варианта.

  • kind='average' строит традиционный график PD;
  • kind='individual' строит график ICE;
  • kind='both' строит на одном графике и ICE, и PD.

Для задания kind отдельно для каждого графика можно передать список таких строк. Длина списка должна совпадать с количеством запрошенных взаимодействий в features.

Примечание

ICE (‘individual’ или ‘both’) не является допустимым вариантом для графиков двухфакторных взаимодействий. В таком случае будет вызвана ошибка. Для графиков двухфакторных взаимодействий следует всегда задавать вариант ‘average’.

Примечание

Быстрый вариант method='recursion' доступен только для kind='average' и sample_weights=None. Для вычисления индивидуальных зависимостей и взвешенных средних необходимо использовать более медленный вариант method='brute'.

Добавлено в версии 0.24: Добавлен параметр kind с вариантами 'average', 'individual' и 'both'.

Добавлено в версии 1.1: Добавлена возможность передавать список строк, задающих kind для каждого графика.

subsamplefloat, int or None, default=1000

Выборка для кривых ICE, когда kind равно ‘individual’ или ‘both’. Если значение имеет тип float, оно должно находиться в диапазоне от 0.0 до 1.0 и задаёт долю набора данных, используемую для построения кривых ICE. Если значение имеет тип int, оно задаёт максимальное абсолютное количество используемых образцов.

Обратите внимание, что для вычисления частичной зависимости по-прежнему используется весь набор данных, когда kind='both'.

Добавлено в версии 0.24.

random_stateint, RandomState instance or None, default=None

Управляет случайным выбором образцов, когда subsamples не равно None. Подробности см. в глоссарии.

Добавлено в версии 0.24.

is_categoricallist of (bool,) or list of (bool, bool), default=None

Указывает, является ли каждый целевой признак в features категориальным. Длина списка должна совпадать с features. Если задано None, предполагается, что все признаки являются непрерывными.

Добавлено в версии 1.2.

Атрибуты:
bounding_ax_matplotlib Axes or None

Если ax является объектом axes или None, bounding_ax_ — это объект axes, в котором построена сетка графиков частичной зависимости. Если ax является списком объектов axes или массивом numpy из объектов axes, bounding_ax_ равен None.

axes_ndarray of matplotlib Axes

Если ax является объектом axes или None, axes_[i, j] — это объект axes в i-й строке и j-м столбце. Если ax является списком объектов axes, axes_[i] — это i-й элемент в ax. Элементы со значением None соответствуют отсутствующим объектам axes в этой позиции.

lines_ndarray of matplotlib Artists

Если ax является объектом axes или None, lines_[i, j] — это кривая частичной зависимости в i-й строке и j-м столбце. Если ax является списком объектов axes, lines_[i] — это кривая частичной зависимости, соответствующая i-му элементу в ax. Элементы со значением None соответствуют отсутствующим объектам axes или объектам axes без линейного графика.

deciles_vlines_ndarray of matplotlib LineCollection

Если ax является объектом axes или None, vlines_[i, j] — это коллекция линий, представляющая децили по оси x для i-й строки и j-го столбца. Если ax является списком объектов axes, vlines_[i] соответствует i-му элементу в ax. Элементы со значением None соответствуют отсутствующим объектам axes или объектам axes без графика PDP.

Добавлено в версии 0.23.

deciles_hlines_ndarray of matplotlib LineCollection

Если ax является объектом axes или None, vlines_[i, j] — это коллекция линий, представляющая децили по оси y для i-й строки и j-го столбца. Если ax является списком объектов axes, vlines_[i] соответствует i-му элементу в ax. Элементы со значением None соответствуют отсутствующим объектам axes или объектам axes без графика двухфакторного взаимодействия.

Добавлено в версии 0.23.

contours_ndarray of matplotlib Artists

Если ax является объектом axes или None, contours_[i, j] — это график частичной зависимости в i-й строке и j-м столбце. Если ax является списком объектов axes, contours_[i] — это график частичной зависимости, соответствующий i-му элементу в ax. Элементы со значением None соответствуют отсутствующим объектам axes или объектам axes без контурного графика.

bars_ndarray of matplotlib Artists

Если ax является объектом axes или None, bars_[i, j] — это столбчатый график частичной зависимости в i-й строке и j-м столбце (для категориального признака). Если ax является списком объектов axes, bars_[i] — это столбчатый график частичной зависимости, соответствующий i-му элементу в ax. Элементы со значением None соответствуют отсутствующим объектам axes или объектам axes без столбчатого графика.

Добавлено в версии 1.2.

heatmaps_ndarray of matplotlib Artists

Если ax является объектом axes или None, heatmaps_[i, j] — это тепловая карта частичной зависимости в i-й строке и j-м столбце (для пары категориальных признаков). Если ax является списком объектов axes, heatmaps_[i] — это тепловая карта частичной зависимости, соответствующая i-му элементу в ax. Элементы со значением None соответствуют отсутствующим объектам axes или объектам axes без тепловой карты.

Добавлено в версии 1.2.

figure_matplotlib Figure

Рисунок, содержащий графики частичной зависимости.

См. также

partial_dependence

Вычисление значений частичной зависимости.

PartialDependenceDisplay.from_estimator

Построение графика частичной зависимости.

Примеры

>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> from sklearn.datasets import make_friedman1
>>> from sklearn.ensemble import GradientBoostingRegressor
>>> from sklearn.inspection import PartialDependenceDisplay
>>> from sklearn.inspection import partial_dependence
>>> X, y = make_friedman1()
>>> clf = GradientBoostingRegressor(n_estimators=10).fit(X, y)
>>> features, feature_names = [(0,)], [f"Features #{i}" for i in range(X.shape[1])]
>>> deciles = {0: np.linspace(0, 1, num=5)}
>>> pd_results = partial_dependence(
...     clf, X, features=0, kind="average", grid_resolution=5)
>>> display = PartialDependenceDisplay(
...     [pd_results], features=features, feature_names=feature_names,
...     target_idx=0, deciles=deciles
... )
>>> display.plot(pdp_lim={1: (-1.38, 0.66)})
<...>
>>> plt.show()
../../_images/sklearn-inspection-PartialDependenceDisplay-1.png
classmethodfrom_estimator(estimator, X, features, *, sample_weight=None, categorical_features=None, feature_names=None, target=None, response_method='auto', n_cols=3, grid_resolution=100, percentiles=(0.05, 0.95), custom_values=None, method='auto', n_jobs=None, verbose=0, line_kw=None, ice_lines_kw=None, pd_line_kw=None, contour_kw=None, ax=None, kind='average', centered=False, subsample=1000, random_state=None)[исходный код]

Графики частичной зависимости (PD) и индивидуального условного ожидания (ICE).

Графики частичной зависимости, графики индивидуального условного ожидания или их наложение можно построить, задав параметр kind. Этот метод создает по одному графику для каждой записи в features. Графики располагаются в сетке с n_cols столбцами. Для одномерных графиков частичной зависимости децили значений признака отображаются на оси x. Для двумерных графиков децили отображаются на обеих осях, а PDP представляются в виде контурных графиков.

Общие сведения о средствах визуализации scikit-learn см. в руководстве по визуализации. Рекомендации по интерпретации этих графиков приведены в руководстве по анализу.

Пример использования этого метода класса см. в разделе Графики частичной зависимости и индивидуального условного ожидания.

Примечание

PartialDependenceDisplay.from_estimator не поддерживает использование одних и тех же осей в нескольких вызовах. Чтобы построить графики частичной зависимости для нескольких оценщиков, передайте во втором вызове оси, созданные первым вызовом:

>>> from sklearn.inspection import PartialDependenceDisplay
>>> from sklearn.datasets import make_friedman1
>>> from sklearn.linear_model import LinearRegression
>>> from sklearn.ensemble import RandomForestRegressor
>>> X, y = make_friedman1()
>>> est1 = LinearRegression().fit(X, y)
>>> est2 = RandomForestRegressor().fit(X, y)
>>> disp1 = PartialDependenceDisplay.from_estimator(est1, X,
...                                                 [1, 2])
>>> disp2 = PartialDependenceDisplay.from_estimator(est2, X, [1, 2],
...                                                 ax=disp1.axes_)

Предупреждение

Для GradientBoostingClassifier и GradientBoostingRegressor метод 'recursion' (используемый по умолчанию) не учитывает предиктор init процесса бустинга. На практике будут получены те же значения, что и при использовании 'brute', с точностью до постоянного смещения целевого отклика, если init — константный оценщик (что и задано по умолчанию). Однако если init не является константным оценщиком, значения частичной зависимости для 'recursion' будут неверны, поскольку смещение будет зависеть от выборки. Предпочтительнее использовать метод 'brute'. Обратите внимание, что это относится только к GradientBoostingClassifier и GradientBoostingRegressor, но не к HistGradientBoostingClassifier и HistGradientBoostingRegressor.

Добавлено в версии 1.0.

Параметры:
estimatorBaseEstimator

Обученный объект оценщика, реализующий predict, predict_proba или decision_function. Классификаторы с несколькими выходами и несколькими классами не поддерживаются.

X{array-like, dataframe} формы (n_samples, n_features)

X используется для создания сетки значений целевого features (для которого вычисляется частичная зависимость), а также для создания значений признаков дополнения, когда method равен 'brute'.

featuresсписок значений {int, str, пара int, пара str}

Целевые признаки, для которых нужно построить PDP. Если features[i] — целое число или строка, строится одномерный PDP; если features[i] — кортеж, строится двумерный PDP (поддерживается только с kind='average'). Каждый кортеж должен содержать 2 элемента. Если какая-либо запись является строкой, она должна присутствовать в feature_names.

sample_weightподобный массиву объект формы (n_samples,), по умолчанию=None

Веса выборок используются для вычисления взвешенных средних при усреднении выходных значений модели. Если None, все выборки имеют одинаковый вес. Если sample_weight не равен None, то method будет установлен в 'brute'. Обратите внимание, что sample_weight игнорируется для kind='individual'.

Добавлено в версии 1.3.

categorical_featuresподобный массиву объект формы (n_features,) или формы (n_categorical_features,), dtype={bool, int, str}, по умолчанию=None

Указывает категориальные признаки.

  • None: ни один признак не считается категориальным;
  • подобный массиву объект с булевыми значениями: булева маска формы (n_features,), указывающая, какие признаки являются категориальными. Таким образом, этот массив имеет ту же форму, что и X.shape[1];
  • подобный массиву объект с целыми числами или строками: целочисленные индексы или строки, указывающие категориальные признаки.

Добавлено в версии 1.2.

feature_namesподобный массиву объект формы (n_features,), dtype=str, по умолчанию=None

Имя каждого признака; feature_names[i] содержит имя признака с индексом i. По умолчанию именем признака является его числовой индекс для массива NumPy и имя столбца для фрейма данных pandas.

targetint, по умолчанию=None
  • В случае многоклассовой классификации задает класс, для которого следует вычислить PDP. Обратите внимание, что при бинарной классификации всегда используется положительный класс (индекс 1).
  • В случае нескольких выходов задает задачу, для которой следует вычислить PDP.

Игнорируется при бинарной классификации и классической регрессии.

response_method{‘auto’, ‘predict_proba’, ‘decision_function’}, по умолчанию=’auto’

Указывает, использовать ли predict_proba или decision_function в качестве целевого отклика. Для регрессоров этот параметр игнорируется, а откликом всегда является результат predict. По умолчанию сначала используется predict_proba, а если он отсутствует — decision_function. Если method равен 'recursion', откликом всегда является результат decision_function.

n_colsint, по умолчанию=3

Максимальное число столбцов в сетке графиков. Активен только тогда, когда ax — одна ось или None.

grid_resolutionint, по умолчанию=100

Число равноотстоящих точек на осях графиков для каждого целевого признака. Этот параметр переопределяется параметром custom_values, если он задан.

percentilesкортеж float, по умолчанию=(0.05, 0.95)

Нижний и верхний процентили, используемые для определения крайних значений осей PDP. Значения должны находиться в диапазоне [0, 1]. Этот параметр переопределяется параметром custom_values, если он задан.

custom_valuesdict

Словарь, сопоставляющий индекс элемента features с массивом значений, для которых следует вычислить частичную зависимость соответствующего признака. Задание диапазона значений признака переопределяет grid_resolution и percentiles.

Добавлено в версии 1.7.

methodstr, по умолчанию=’auto’

Метод, используемый для вычисления усредненных прогнозов:

  • 'recursion' поддерживается только для некоторых оценщиков на основе деревьев (а именно GradientBoostingClassifier, GradientBoostingRegressor, HistGradientBoostingClassifier, HistGradientBoostingRegressor, DecisionTreeRegressor, RandomForestRegressor), но вычисляется быстрее. При использовании этого метода целевой отклик классификатора всегда является функцией решения, а не предсказанными вероятностями. Поскольку метод 'recursion' по определению неявно вычисляет среднее значение ICE, он несовместим с ICE, поэтому kind должен быть равен 'average'.
  • 'brute' поддерживается для любого оценщика, но требует больше вычислительных ресурсов.
  • 'auto': для оценщиков, поддерживающих 'recursion', используется он, а в противном случае используется 'brute'. Если sample_weight не равен None, то независимо от оценщика используется 'brute'.

Различия между методами 'brute' и 'recursion' описаны в этом примечании.

n_jobsint, по умолчанию=None

Число процессоров, используемых для вычисления частичных зависимостей. Вычисления распараллеливаются по признакам, указанным параметром features.

None означает 1, если только не используется контекст joblib.parallel_backend. -1 означает использование всех процессоров. Подробнее см. в глоссарии.

verboseint, по умолчанию=0

Подробный вывод при вычислении PD.

line_kwdict, по умолчанию=None

Словарь с именованными аргументами, передаваемыми в вызов matplotlib.pyplot.plot. Для одномерных графиков частичной зависимости. Можно использовать для задания общих свойств как для ice_lines_kw, так и для pdp_line_kw.

ice_lines_kwdict, по умолчанию=None

Словарь с именованными аргументами, передаваемыми в вызов matplotlib.pyplot.plot. Для линий ICE на одномерных графиках частичной зависимости. Пары ключ-значение, заданные в ice_lines_kw, имеют приоритет над line_kw.

pd_line_kwdict, по умолчанию=None

Словарь с именованными аргументами, передаваемыми в вызов matplotlib.pyplot.plot. Для частичной зависимости на одномерных графиках частичной зависимости. Пары ключ-значение, заданные в pd_line_kw, имеют приоритет над line_kw.

contour_kwdict, по умолчанию=None

Словарь с именованными аргументами, передаваемыми в вызов matplotlib.pyplot.contourf. Для двумерных графиков частичной зависимости.

axоси Matplotlib или подобный массиву объект из осей Matplotlib, по умолчанию=None
  • Если передана одна ось, она рассматривается как ограничивающая ось, и внутри ее границ будет нарисована сетка графиков частичной зависимости. Параметр n_cols управляет числом столбцов в сетке.
  • Если передан подобный массиву объект из осей, графики частичной зависимости будут нарисованы непосредственно на этих осях.
  • Если None, создаются фигура и ограничивающая ось, и этот случай обрабатывается так же, как случай с одной осью.
kind{‘average’, ‘individual’, ‘both’}, по умолчанию=’average’

Определяет, следует ли отображать частичную зависимость, усредненную по всем выборкам набора данных, одну линию на выборку или оба варианта.

  • kind='average' создает традиционный график PD;
  • kind='individual' создает график ICE.

Обратите внимание, что быстрый вариант method='recursion' доступен только для kind='average' и sample_weights=None. Вычисление индивидуальных зависимостей и взвешенных средних требует использования более медленного method='brute'.

centeredbool, по умолчанию=False

Если True, линии ICE и PD будут начинаться в начале координат оси y. По умолчанию центрирование не выполняется.

Добавлено в версии 1.1.

subsamplefloat, int или None, по умолчанию=1000

Выборка данных для кривых ICE, когда kind равно ‘individual’ или ‘both’. Если float, значение должно находиться в диапазоне от 0.0 до 1.0 и задавать долю набора данных, используемую для построения кривых ICE. Если int, задает абсолютное число используемых выборок.

Обратите внимание, что для вычисления усредненной частичной зависимости при kind='both' по-прежнему используется весь набор данных.

random_stateint, экземпляр RandomState или None, по умолчанию=None

Управляет случайным выбором выборок, если параметр subsamples не равен None, а kind равен 'both' или 'individual'. Подробнее см. в глоссарии.

Возвращает:
displayPartialDependenceDisplay

См. также

partial_dependence

Вычисление значений частичной зависимости.

Примеры

>>> import matplotlib.pyplot as plt
>>> from sklearn.datasets import make_friedman1
>>> from sklearn.ensemble import GradientBoostingRegressor
>>> from sklearn.inspection import PartialDependenceDisplay
>>> X, y = make_friedman1()
>>> clf = GradientBoostingRegressor(n_estimators=10).fit(X, y)
>>> PartialDependenceDisplay.from_estimator(clf, X, [0, (0, 1)])
<...>
>>> plt.show()
../../_images/sklearn-inspection-PartialDependenceDisplay-2.png
plot(*, ax=None, n_cols=3, line_kw=None, ice_lines_kw=None, pd_line_kw=None, contour_kw=None, bar_kw=None, heatmap_kw=None, pdp_lim=None, centered=False)[исходный код]

Построение графиков частичной зависимости.

Параметры:
axоси Matplotlib или подобный массиву объект из осей Matplotlib, по умолчанию=None
  • Если передана одна ось, она рассматривается как ограничивающая ось

    и внутри ее границ будет нарисована сетка графиков частичной зависимости. Параметр n_cols управляет числом столбцов в сетке.

  • Если передан подобный массиву объект из осей, графики частичной зависимости

    будут нарисованы непосредственно на этих осях.

  • Если None, создаются фигура и ограничивающая ось, и этот случай

    обрабатывается так же, как случай с одной осью.

n_colsint, по умолчанию=3

Максимальное число столбцов в сетке графиков. Активен только тогда, когда ax — одна ось или None.

line_kwdict, по умолчанию=None

Словарь с именованными аргументами, передаваемыми в вызов matplotlib.pyplot.plot. Для одномерных графиков частичной зависимости.

ice_lines_kwdict, по умолчанию=None

Словарь с именованными аргументами, передаваемыми в вызов matplotlib.pyplot.plot. Для линий ICE на одномерных графиках частичной зависимости. Пары ключ-значение, заданные в ice_lines_kw, имеют приоритет над line_kw.

Добавлено в версии 1.0.

pd_line_kwdict, по умолчанию=None

Словарь с именованными аргументами, передаваемыми в вызов matplotlib.pyplot.plot. Для частичной зависимости на одномерных графиках частичной зависимости. Пары ключ-значение, заданные в pd_line_kw, имеют приоритет над line_kw.

Добавлено в версии 1.0.

contour_kwdict, по умолчанию=None

Словарь с именованными аргументами, передаваемыми в вызов matplotlib.pyplot.contourf для двумерных графиков частичной зависимости.

bar_kwdict, по умолчанию=None

Словарь с именованными аргументами, передаваемыми в вызов matplotlib.pyplot.bar для одномерных графиков частичной зависимости категориальных признаков.

Добавлено в версии 1.2.

heatmap_kwdict, по умолчанию=None

Словарь с именованными аргументами, передаваемыми в вызов matplotlib.pyplot.imshow для двумерных графиков частичной зависимости категориальных признаков.

Добавлено в версии 1.2.

pdp_limdict, по умолчанию=None

Глобальные минимальное и максимальное значения усредненных прогнозов, чтобы все графики имели одинаковый масштаб и пределы по оси y. pdp_lim[1] — глобальные минимальное и максимальное значения для отдельных кривых частичной зависимости. pdp_lim[2] — глобальные минимальное и максимальное значения для двумерных кривых частичной зависимости. Если None (по умолчанию), пределы определяются по глобальным минимуму и максимуму всех прогнозов.

Добавлено в версии 1.1.

centeredbool, по умолчанию=False

Если True, линии ICE и PD будут начинаться в начале координат оси y. По умолчанию центрирование не выполняется.

Добавлено в версии 1.1.

Возвращает:
displayPartialDependenceDisplay

Возвращает объект PartialDependenceDisplay, содержащий графики частичной зависимости.

Примеры галереи

Признаки в деревьях градиентного бустинга с гистограммами

Монотонные ограничения

Графики частичной зависимости и индивидуального условного ожидания

Расширенные возможности построения графиков частичной зависимости

Основные нововведения scikit-learn 0.23

Основные нововведения scikit-learn 0.24

Основные нововведения scikit-learn 1.2

Основные нововведения scikit-learn 1.4

© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.inspection.PartialDependenceDisplay.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API