PartialDependenceDisplay#

class sklearn.inspection.PartialDependenceDisplay(pd_results, *, features, feature_names, target_idx, deciles, kind='average', subsample=1000, random_state=None, is_categorical=None)[源代码]#

部分依赖图(PDP)。

这还可以显示个人部分依赖性,通常称为:个人条件期望(ICE)。

It is recommended to use from_estimator to create a PartialDependenceDisplay. All parameters are stored as attributes.

阅读更多在 部分相关的高级绘图User Guide .

Added in version 0.22.

参数:
pd_results一群人列表

结果 partial_dependencefeatures .

features(int,)列表或(int,int)列表

给定情节的要素索引。由一个整元组成的二元组将绘制一个特征的部分依赖曲线。由两个整元组成的二元组将绘制双向部分依赖曲线作为等值线图。

feature_names字符串列表

与中的索引对应的要素名称 features .

target_idxint
  • 在多类设置中,指定应计算其SDP的类。请注意,对于二元分类,始终使用正类(索引1)。

  • 在多输出设置中,指定应计算的SDP的任务。

在二元分类或经典回归设置中被忽视。

decilesdict

中的要素指数的十分位数 features .

kind“平均”、“个体”、“两者”}或此类str列表, 默认值='平均值'

是绘制数据集中所有样本的平均偏依赖性,还是绘制每个样本的一条线,还是绘制两者。

  • kind='average' 导致传统PD图;

  • kind='individual' 结果显示ICE图;

  • kind='both' 结果将ICE和PD绘制在同一个图上。

可以提供此类字符串的列表来指定 kind 按地块计算。列表的长度应与中请求的交互次数相同 features .

备注

ICE(“单独”或“两者”)不是双向相互作用图的有效选项。结果,将出现错误。2-交互图应始终配置为使用“平均”类型的方式。

备注

快速 method='recursion' 选项仅适用于 kind='average'sample_weights=None .计算个体依赖关系并进行加权平均需要使用较慢的 method='brute' .

Added in version 0.24: 添加 kind 参数与 'average' , 'individual' ,而且 'both' 选项.

Added in version 1.1: 添加传递字符串列表的可能性 kind 对于每个情节。

subsamplefloat、int或无,默认=1000

ICE曲线采样, kind 是“个人”或“两者”。如果是浮动的,则应在0.0和1.0之间,并表示用于绘制ICE曲线的数据集的比例。如果是int,则表示要使用的样本的最大绝对数。

请注意,在以下情况下,仍然使用完整数据集来计算部分依赖性: kind='both' .

Added in version 0.24.

random_stateint,RandomState实例或无,默认=无

当子样本不 None .看到 Glossary 有关详细信息

Added in version 0.24.

is_categorical(bool,)列表或(bool,bool)列表,默认=无

每个目标特征是否在 features 是否绝对。列表的大小应与 features .如果 None ,假设所有特征都是连续的。

Added in version 1.2.

属性:
bounding_ax_matplotlib轴或无轴

如果 ax 是轴或无, bounding_ax_ 是绘制部分相关图网格的轴。如果 ax 是一个轴列表或一个麻木的轴数组, bounding_ax_ 没有。

axes_matplotlib轴的nd数组

如果 ax 是轴或无, axes_[i, j] 是第i行和第j列上的轴。如果 ax 是一个轴列表, axes_[i] 是中的第i个物品 ax .无的元素对应于该位置不存在的轴。

lines_matplotlib艺术家的众多行列

如果 ax 是轴或无, lines_[i, j] 是第i行和第j列的部分依赖曲线。如果 ax 是一个轴列表, lines_[i] 是对应于中第i项的部分依赖曲线 ax .无的元素对应于不存在的轴或不包括线图的轴。

deciles_vlines_matplotlib LineCollection的nd数组

如果 ax 是轴或无, vlines_[i, j] 是表示第i行和第j列的x轴十分位数的线集合。如果 ax 是一个轴列表, vlines_[i] 对应于中的第i个项目 ax .无的元素对应于不存在的轴或不包括PD图的轴。

Added in version 0.23.

deciles_hlines_matplotlib LineCollection的nd数组

如果 ax 是轴或无, vlines_[i, j] 是表示第i行和第j列的y轴十分位数的线集合。如果 ax 是一个轴列表, vlines_[i] 对应于中的第i个项目 ax .无的元素对应于不存在的轴或不包括双向图的轴。

Added in version 0.23.

contours_matplotlib艺术家的众多行列

如果 ax 是轴或无, contours_[i, j] 是第i行和第j列的部分依赖性图。如果 ax 是一个轴列表, contours_[i] 是与中的第i个项目对应的部分依赖图 ax .无的元素对应于不存在的轴或不包括等值线图的轴。

bars_matplotlib艺术家的众多行列

如果 ax 是轴或无, bars_[i, j] 是第i行和第j列上的部分依赖条图(对于分类特征)。如果 ax 是一个轴列表, bars_[i] 是与中的第i项对应的部分相关条形图 ax .无的元素对应于不存在的轴或不包括条形图的轴。

Added in version 1.2.

heatmaps_matplotlib艺术家的众多行列

如果 ax 是轴或无, heatmaps_[i, j] 是第i行和第j列上的部分依赖热图(对于一对分类特征)。如果 ax 是一个轴列表, heatmaps_[i] 是与中的第i个项目对应的部分依赖热图 ax .无的元素对应于不存在的轴或不包括热图的轴。

Added in version 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
classmethod from_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), 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 参数.的 len(features) 地块排列在网格中, n_cols 列.双向部分依赖图绘制为等值线图。对于单向图,要素值的十分位数将在x轴上显示带有勾号标记,对于双向图,要素值的十分位数将在x轴上显示带有勾号标记。

阅读更多的 User Guide .

备注

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_)

警告

GradientBoostingClassifierGradientBoostingRegressor'recursion' 方法(默认使用)不会考虑 init 助推过程的预测器。在实践中,这将产生与 'brute' 目标响应中的恒定偏差,前提是 init 是一个常数估计器(这是默认值)。但如果 init 不是常数估计量,部分依赖值不正确 'recursion' 因为偏移将是样本相关的。优选使用 'brute' 法请注意,这仅适用于 GradientBoostingClassifierGradientBoostingRegressor ,不是 HistGradientBoostingClassifierHistGradientBoostingRegressor .

Added in version 1.0.

参数:
estimatorBaseEstimator

实现的匹配估计器对象 predict , predict_proba ,或者 decision_function .不支持多输出多类分类器。

X形状(n_samples,n_features)的{类数组,n_features}

X 用于生成目标的值网格 features (其中将评估部分依赖性),并且当 method'brute' .

features{int,str,pair of int,pair of str}

为其创建DPP的目标功能。如果 features[i] 是一个数字或一个字符串,则创建一个单向的PDF;如果 features[i] 是一个tuple,则创建一个双向PDF(仅支持 kind='average' ).每个元组的大小必须为2。如果任何条目是字符串,则它必须在 feature_names .

sample_weight形状类似数组(n_samples,),默认=无

Sample weights are used to calculate weighted means when averaging the model output. If None, then samples are equally weighted. If sample_weight is not None, then method will be set to 'brute'. Note that sample_weight is ignored for kind='individual'.

Added in version 1.3.

categorical_features形状(n_features,)或形状的阵列状 (n_category_features,),dype ={bool,int,stra},默认=无

指示类别特征。

  • None :没有任何功能被认为是绝对的;

  • 布尔数组类:形状的布尔屏蔽 (n_features,) 指示哪些特征是分类的。因此,这个阵列具有相同的形状 X.shape[1] ;

  • 类似于字符串数组的integer或字符串:指示类别特征的integer index或字符串。

Added in version 1.2.

feature_names形状类似数组(n_features,),dtype=str,默认值=None

每个功能的名称; feature_names[i] 包含索引的要素的名称 i .默认情况下,功能的名称对应于NumPy数组的数字索引和pandas rame的列名。

targetint,默认=无
  • 在多类设置中,指定应计算其SDP的类。请注意,对于二元分类,始终使用正类(索引1)。

  • 在多输出设置中,指定应计算的SDP的任务。

在二元分类或经典回归设置中被忽视。

response_method'自动','预测_proba ', 默认='自动'

指定是否使用 predict_probadecision_function 作为目标响应。对于回归量,此参数被忽略,并且响应始终是 predict .默认情况下, predict_proba 先尝试然后我们恢复到 decision_function 如果它不存在。如果 method'recursion' ,响应始终是 decision_function .

n_colsint,默认=3

网格图中的最大列数。仅在以下情况下激活 ax 是单轴或 None .

grid_resolutionint,默认=100

对于每个目标要素,图轴上等距点的数量。

percentilesfloat的数组,默认=(0.05,0.95)

用于创建PDP轴极值的上、下百分位数。必须处于 [0, 1] .

method字符串,默认='自动'

用于计算平均预测的方法:

请参阅 this note 之间的差 'brute''recursion'

n_jobsint,默认=无

用于计算部分依赖关系的中央处理器数量。计算在指定的要素上并行进行 features 参数.

None 意思是1,除非在a中 joblib.parallel_backend 上下文 -1 意味着使用所有处理器。看到 Glossary 了解更多详细信息。

verboseint,默认=0

PD计算期间的详细输出。

line_kwdict,默认=无

将关键词传递给 matplotlib.pyplot.plot 电话对于单向部分依赖图。它可用于定义两者的公共属性 ice_lines_kwpdp_line_kw .

ice_lines_kwdict,默认=无

关键词传递给 matplotlib.pyplot.plot 电话对于单向部分依赖图中的ICE线。中定义的关键值对 ice_lines_kw 优先于 line_kw .

pd_line_kwdict,默认=无

关键词传递给 matplotlib.pyplot.plot 电话对于单向部分依赖图中的部分依赖。中定义的关键值对 pd_line_kw 优先于 line_kw .

contour_kwdict,默认=无

将关键词传递给 matplotlib.pyplot.contourf 电话对于双向部分依赖图。

axMatplotlib轴或Matplotlib轴的类数组,默认=无
  • 如果传递了单个轴,它将被视为边界轴,并且部分依赖图的网格将在这些边界内绘制。的 n_cols 参数控制网格中的列数。

  • 如果传递类似阵列的轴,则部分依赖图将直接绘制到这些轴中。

  • 如果 None ,创建图形和边界轴并将其视为单轴情况。

kind'average','individual','both'},default='average'

是绘制数据集中所有样本的平均偏依赖性,还是绘制每个样本的一条线,还是绘制两者。

  • kind='average' 导致传统PD图;

  • kind='individual' 结果为ICE图。

请注意,快 method='recursion' 选项仅适用于 kind='average'sample_weights=None .计算个体依赖关系并进行加权平均需要使用较慢的 method='brute' .

centered布尔,默认=假

如果 True ,ICE和PD线将从y轴的原点开始。默认情况下,不会进行定心。

Added in version 1.1.

subsamplefloat、int或无,默认=1000

ICE曲线采样, kind 是“个人”或“两者”。如果 float ,应介于0.0和1.0之间,并表示用于绘制ICE曲线的数据集的比例。如果 int ,表示要使用的样本绝对数。

请注意,在以下情况下,仍然使用完整数据集来计算平均部分依赖性: kind='both' .

random_stateint,RandomState实例或无,默认=无

当子样本不 Nonekind 要么是 'both''individual' .看到 Glossary 有关详细信息

返回:
display : PartialDependenceDisplayPartialDependenceDisplay

参见

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)[源代码]#

绘制部分相关性图。

参数:
axMatplotlib轴或Matplotlib轴的类数组,默认=无
  • 如果传递单个轴,则将其视为边界轴

    并且将在这些界限内绘制部分相关图的网格。的 n_cols 参数控制网格中的列数。

  • 如果传递类似数组的轴,则部分依赖性

    图将直接绘制到这些轴上。

  • 如果 None ,创建并处理图形和边界轴

    as the single axes case.

n_colsint,默认=3

网格图中的最大列数。仅在以下情况下激活 ax 是单轴或 None .

line_kwdict,默认=无

将关键词传递给 matplotlib.pyplot.plot 电话对于单向部分依赖图。

ice_lines_kwdict,默认=无

关键词传递给 matplotlib.pyplot.plot 电话对于单向部分依赖图中的ICE线。中定义的关键值对 ice_lines_kw 优先于 line_kw .

Added in version 1.0.

pd_line_kwdict,默认=无

关键词传递给 matplotlib.pyplot.plot 电话对于单向部分依赖图中的部分依赖。中定义的关键值对 pd_line_kw 优先于 line_kw .

Added in version 1.0.

contour_kwdict,默认=无

将关键词传递给 matplotlib.pyplot.contourf 呼吁双向部分依赖图。

bar_kwdict,默认=无

将关键词传递给 matplotlib.pyplot.bar 呼吁单向分类部分依赖图。

Added in version 1.2.

heatmap_kwdict,默认=无

将关键词传递给 matplotlib.pyplot.imshow 需要双向分类偏相关图。

Added in version 1.2.

pdp_limdict,默认=无

全球最小和最大平均预测,以便所有图都具有相同的比例和y限制。 pdp_lim[1] 是单个部分依赖曲线的全局最小值和最大值。 pdp_lim[2] 是双向部分依赖曲线的全局最小值和最大值。如果 None (默认),则限制将从所有预测的全局最小值和最大值中推断。

Added in version 1.1.

centered布尔,默认=假

如果 True ,ICE和PD线将从y轴的原点开始。默认情况下,不会进行定心。

Added in version 1.1.

返回:
display : PartialDependenceDisplayPartialDependenceDisplay

返回一个 PartialDependenceDisplay 包含部分相关性图的对象。