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()
- метод класса 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.plotcall. Для односторонних графиков частичной зависимости. Может использоваться для определения общих свойств для обоих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()
- 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объект, содержащий графики частных зависимостей.
- отображение
Примеры галереи#
Признаки в деревьях с градиентным бустингом на гистограммах
Графики частичной зависимости и индивидуального условного ожидания
Расширенное построение графиков с частичной зависимостью