PartialDependenceDisplay#

класс sklearn.inspection.PartialDependenceDisplay(pd_results, *, features, feature_names, target_idx, децили, kind='average', subsample=1000, random_state=None, is_categorical=None)[источник]#

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

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

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

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

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

Параметры:
pd_resultsсписок объектов Bunch

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

featureslist of (int,) или list of (int, int)

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

feature_namesсписок str

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

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

  • В многозадачной настройке указывает задачу, для которой должны быть вычислены PDP.

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

децилиdict

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

kind{‘average’, ‘individual’, ‘both’} или список таких строк, по умолчанию=’average’

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

  • kind='average' даёт традиционный PD график;

  • kind='individual' приводит к графику ICE;

  • kind='both' приводит к построению как ICE, так и PD на одном графике.

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

Примечание

ICE ('individual' или 'both') не является допустимым вариантом для графиков взаимодействий 2-го порядка. В результате будет вызвана ошибка. Графики взаимодействий 2-го порядка всегда должны быть настроены на использование вида 'average'.

Примечание

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

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

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

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

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

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

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

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

Управляет случайностью выбранных образцов, когда подвыборки не None. См. Глоссарий подробности.

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

is_categoricalсписок (bool,) или список (bool, bool), default=None

Будет ли каждая целевая функция в features является категориальным или нет. Список должен быть того же размера, что и features. Если None, все признаки предполагаются непрерывными.

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

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

Если ax является осью или None, bounding_ax_ являются осями, на которых рисуется сетка графиков частных зависимостей. Если ax является списком осей или массивом NumPy осей, bounding_ax_ равно None.

axes_ndarray осей matplotlib

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

lines_ndarray из matplotlib Artists

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

децильные_вертикальные_линии_ndarray из matplotlib LineCollection

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

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

deciles_hlines_ndarray из matplotlib LineCollection

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

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

contours_ndarray из matplotlib Artists

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

bars_ndarray из matplotlib Artists

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

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

тепловые карты_ndarray из matplotlib Artists

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

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

figure_фигура matplotlib

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

Смотрите также

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
метод класса from_estimator(estimator, X, features, *, sample_weight=None, categorical_features=None, feature_names=None, цель=None, response_method='auto', n_cols=3, grid_resolution=100, процентили=(0.05, 0.95), custom_values=None, метод='auto', n_jobs=None, verbose=0, line_kw=None, ice_lines_kw=None, pd_line_kw=None, contour_kw=None, ax=None, kind='average', центрированный=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}

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

sample_weightarray-like формы (n_samples,), по умолчанию=None

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

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

categorical_featuresarray-like формы (n_features,) или формы (n_categorical_features,), dtype={bool, int, str}, default=None

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

  • None: ни один признак не будет считаться категориальным;

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

  • целочисленный или строковый массивоподобный объект: целочисленные индексы или строки, указывающие категориальные признаки.

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

feature_namesarray-like формы (n_features,), dtype=str, default=None

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

цельint, default=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

The number of equally spaced points on the axes of the plots, for each target feature. This parameter is overridden by custom_values если этот параметр установлен.

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

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

custom_valuesdict

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

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

методstr, default='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, default=None

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

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

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

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

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

Словарь с ключевыми словами, переданными в matplotlib.pyplot.plot call. Для односторонних графиков частичной зависимости. Может использоваться для определения общих свойств для обоих 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 параметр управляет количеством столбцов в сетке.

  • Если передается array-like осей, графики частных зависимостей будут нарисованы непосредственно в этих осях.

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

kind{‘average’, ‘individual’, ‘both’}, по умолчанию ‘average’

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

  • kind='average' даёт традиционный PD график;

  • kind='individual' приводит к графику ICE.

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

центрированныйbool, по умолчанию=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

Управляет случайностью выбранных образцов, когда подвыборки не None и kind является либо 'both' или 'individual'. См. Глоссарий подробности.

Возвращает:
отображениеPartialDependenceDisplay

Смотрите также

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, центрированный=False)[источник]#

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

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

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

  • После успешного завершения всех CD-задач в PR, объединить его с

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

  • Если 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.

центрированныйbool, по умолчанию=False

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

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

Возвращает:
отображениеPartialDependenceDisplay

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