偏依赖显示#
- class sklearn.inspection.PartialDependenceDisplay(pd_results, *, features, feature_names, target_idx, deciles, kind='average', subsample=1000, random_state=None, is_categorical=None)[source]#
- 偏依赖图 (PDP)。 - 这也可以显示个体偏依赖,通常称为:个体条件期望 (ICE)。 - 建议使用 - from_estimator创建- PartialDependenceDisplay。所有参数都存储为属性。- 更多信息请阅读 使用偏依赖进行高级绘图 和 用户指南。 - 0.22版本新增。 - 参数:
- pd_resultsBunch 列表
- partial_dependence的结果,用于- features。
- features整数元组列表或整数对元组列表
- 给定绘图的特征索引。一个整数的元组将绘制一个特征的偏依赖曲线。两个整数的元组将绘制一个二维偏依赖曲线作为等高线图。 
- feature_names字符串列表
- 对应于 - features中索引的特征名称。
- target_idx整数
- 在多类别设置中,指定应计算 PDP 的类别。请注意,对于二元分类,始终使用正类(索引 1)。 
- 在多输出设置中,指定应计算 PDP 的任务。 
 - 在二元分类或经典回归设置中忽略。 
- deciles字典
- features中特征索引的分位数。
- kind{'average', 'individual', 'both'} 或此类字符串列表,默认为 '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的可能性。
- subsample浮点数、整数或 None,默认为 1000
- 当 - kind为 'individual' 或 'both' 时,ICE 曲线的采样。如果为浮点数,则应介于 0.0 和 1.0 之间,并表示用于绘制 ICE 曲线的 dataset 的比例。如果为整数,则表示要使用的样本的最大绝对数量。- 请注意,当 - kind='both'时,仍将使用完整的数据集来计算偏依赖。- 0.24 版本新增。 
- random_state整数、RandomState 实例或 None,默认为 None
- 当 subsamples 不为 - None时,控制所选样本的随机性。详情请参见 词汇表。- 0.24 版本新增。 
- is_categorical布尔值元组列表或布尔值对元组列表,默认为 None
- features中每个目标特征是否是分类的。列表的长度应与- features相同。如果为- None,则假定所有特征都是连续的。- 1.2 版本新增。 
 
- 属性:
- bounding_ax_matplotlib Axes 或 None
- 如果 - ax是一个 axes 或 None,则- bounding_ax_是绘制偏依赖图网格的 axes。如果- ax是 axes 列表或 axes 的 numpy 数组,则- bounding_ax_为 None。
- axes_matplotlib Axes 的 ndarray
- 如果 - ax是一个 axes 或 None,则- axes_[i, j]是第 i 行第 j 列的 axes。如果- ax是 axes 列表,则- axes_[i]是- ax中的第 i 个项目。值为 None 的元素对应于该位置不存在的 axes。
- lines_matplotlib Artists 的 ndarray
- 如果 - ax是坐标轴对象或None,则- lines_[i, j]是第i行第j列的偏依赖曲线。如果- ax是坐标轴对象的列表,则- lines_[i]对应于- ax中第i个项目的偏依赖曲线。值为None的元素对应于不存在的坐标轴或不包含线图的坐标轴。
- deciles_vlines_matplotlib LineCollection 的ndarray
- 如果 - ax是坐标轴对象或None,则- vlines_[i, j]是表示第i行第j列x轴分位数的线集合。如果- ax是坐标轴对象的列表,则- vlines_[i]对应于- ax中第i个项目。值为None的元素对应于不存在的坐标轴或不包含PDP图的坐标轴。- 0.23版本新增。 
- deciles_hlines_matplotlib LineCollection 的ndarray
- 如果 - ax是坐标轴对象或None,则- vlines_[i, j]是表示第i行第j列y轴分位数的线集合。如果- ax是坐标轴对象的列表,则- vlines_[i]对应于- ax中第i个项目。值为None的元素对应于不存在的坐标轴或不包含二维图的坐标轴。- 0.23版本新增。 
- contours_matplotlib Artists 的ndarray
- 如果 - ax是坐标轴对象或None,则- contours_[i, j]是第i行第j列的偏依赖图。如果- ax是坐标轴对象的列表,则- contours_[i]对应于- ax中第i个项目的偏依赖图。值为None的元素对应于不存在的坐标轴或不包含等值线图的坐标轴。
- bars_matplotlib Artists 的ndarray
- 如果 - ax是坐标轴对象或None,则- bars_[i, j]是第i行第j列的偏依赖条形图(对于分类特征)。如果- ax是坐标轴对象的列表,则- bars_[i]对应于- ax中第i个项目的偏依赖条形图。值为None的元素对应于不存在的坐标轴或不包含条形图的坐标轴。- 1.2 版本新增。 
- heatmaps_matplotlib Artists 的ndarray
- 如果 - ax是坐标轴对象或None,则- heatmaps_[i, j]是第i行第j列的偏依赖热力图(对于一对分类特征)。如果- ax是坐标轴对象的列表,则- heatmaps_[i]对应于- ax中第i个项目的偏依赖热力图。值为None的元素对应于不存在的坐标轴或不包含热力图的坐标轴。- 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()   - 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)[source]#
- 偏依赖(PD)和个体条件期望(ICE)图。 - 通过设置 - kind参数,可以绘制偏依赖图、个体条件期望图或两者的叠加图。- len(features)个图将以- n_cols列的网格形式排列。二维偏依赖图将作为等高线图绘制。对于一维图,特征值的十分位数将显示在x轴上的刻度上;对于二维图,则显示在两个轴上。- 在用户指南中了解更多信息。 - 注意 - 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预测器。在实践中,如果- init是一个常数估计器(默认为此),这将产生与- 'brute'相同的值,目标响应中仅存在一个常数偏移。但是,如果- init不是常数估计器,则- 'recursion'的偏依赖值是不正确的,因为偏移将取决于样本。最好使用- 'brute'方法。请注意,这仅适用于- GradientBoostingClassifier和- GradientBoostingRegressor,不适用于- HistGradientBoostingClassifier和- HistGradientBoostingRegressor。- 版本1.0中新增。 - 参数:
- estimatorBaseEstimator
- 一个已拟合的估计器对象,实现了predict、predict_proba或decision_function。不支持多输出多类分类器。 
- X形状为(n_samples, n_features)的{array-like, dataframe}
- X用于为目标- features(将在其中评估偏依赖)生成一系列值,以及在- method为- 'brute'时生成补充特征的值。
- features整型、字符串或整型对、字符串对的列表
- 用于创建PDP的目标特征。如果 - features[i]是整数或字符串,则创建一个一维PDP;如果- features[i]是元组,则创建一个二维PDP(仅在- kind='average'时支持)。每个元组的大小必须为2。如果任何条目是字符串,则它必须在- feature_names中。
- sample_weightarray-like of shape (n_samples,), default=None
- 样本权重用于在对模型输出进行平均时计算加权平均值。如果为 - None,则样本权重相等。如果- sample_weight不为- None,则- method将设置为- 'brute'。- sample_weight对于- kind='individual'将被忽略。- 版本1.3中新增。 
- categorical_featuresarray-like of shape (n_features,) or shape (n_categorical_features,), dtype={bool, int, str}, default=None
- 指示类别特征。 - None:没有特征会被视为类别特征;
- 布尔型数组:形状为 - (n_features,)的布尔掩码,指示哪些特征是类别特征。因此,此数组的形状与- X.shape[1]相同;
- 整数或字符串数组:指示类别特征的整数索引或字符串。 
 - 1.2 版本新增。 
- feature_namesarray-like of shape (n_features,), dtype=str, default=None
- 每个特征的名称; - feature_names[i]保存索引为- i的特征的名称。默认情况下,特征的名称对应于NumPy数组的数字索引和pandas DataFrame的列名。
- targetint, default=None
- 在多类别设置中,指定应计算 PDP 的类别。请注意,对于二元分类,始终使用正类(索引 1)。 
- 在多输出设置中,指定应计算 PDP 的任务。 
 - 在二元分类或经典回归设置中忽略。 
- response_method{‘auto’, ‘predict_proba’, ‘decision_function’}, default=’auto’
- 指定是使用predict_proba还是decision_function作为目标响应。对于回归器,此参数将被忽略,响应始终是predict的输出。默认情况下,首先尝试predict_proba,如果不存在,则回退到decision_function。如果 - method是- 'recursion',则响应始终是decision_function的输出。
- n_colsint, default=3
- 网格图中列的最大数量。仅当 - ax是单个轴或- None时有效。
- grid_resolutionint, default=100
- 对于每个目标特征,图轴上等距点的数量。 
- percentilestuple of float, default=(0.05, 0.95)
- 用于创建PDP轴的极值的下限和上限百分位数。必须在[0, 1]之间。 
- methodstr, 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
- 用于计算部分依赖性的CPU数量。计算在由 - 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调用的关键字字典。用于双变量偏依赖图。
- axMatplotlib 坐标轴或类似数组的 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中新增。 
- subsample浮点数、整数或 None,默认为 1000
- 当 - kind为'individual'或'both'时,ICE曲线的采样。如果为- float,则应在0.0和1.0之间,表示用于绘制ICE曲线的dataset比例。如果为- int,则表示要使用的样本绝对数量。- 请注意,当 - kind='both'时,仍然使用完整数据集来计算平均偏依赖性。
- random_state整数、RandomState 实例或 None,默认为 None
- 当subsamples不为 - None且- kind为- 'both'或- 'individual'时,控制所选样本的随机性。详情请参见术语表。
 
- 返回:
- displayPartialDependenceDisplay
 
- display
 - 另请参阅 - 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, centered=False)[source]#
- 绘制偏依赖图。 - 参数:
- axMatplotlib 坐标轴或类似数组的 Matplotlib 坐标轴,默认为None
- 如果传入单个坐标轴,则将其视为边界坐标轴
- 并且偏依赖图的网格将绘制在这些边界内。 - n_cols参数控制网格中的列数。
 
- 如果传入类似数组的坐标轴,则偏依赖
- 图将直接绘制到这些坐标轴中。 
 
- 如果为None,则创建一个图形和一个边界坐标轴,并将其视为
- 单个坐标轴的情况。 
 
- 如果为
 
- n_colsint, default=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对象。
 
- display
 
 
 
     
 
 
 
 
 
 
