partial_dependence#

sklearn.inspection.partial_dependence(estimator, X, features, *, sample_weight=None, categorical_features=None, feature_names=None, response_method='auto', percentiles=(0.05, 0.95), grid_resolution=100, custom_values=None, method='auto', kind='average')[source]#

features 的偏依赖。

特征(或一组特征)的偏依赖对应于估计器在特征每个可能值上的平均响应。

更多信息请阅读 偏依赖图和个体条件期望图用户指南

警告

对于 GradientBoostingClassifierGradientBoostingRegressor'recursion' 方法(默认使用)将不考虑提升过程的 init 预测器。实际上,这会产生与 'brute' 相同的值,仅目标响应存在一个常数偏移,前提是 init 是一个常数估计器(这是默认情况)。但是,如果 init 不是一个常数估计器,那么 'recursion' 的偏依赖值将不正确,因为偏移量会依赖于样本。此时最好使用 'brute' 方法。请注意,这仅适用于 GradientBoostingClassifierGradientBoostingRegressor,不适用于 HistGradientBoostingClassifierHistGradientBoostingRegressor

参数
estimatorBaseEstimator

一个已拟合的估计器对象,实现了 predictpredict_probadecision_function。不支持多输出多类分类器。

X{array-like, sparse matrix or dataframe},形状为 (n_samples, n_features)

X 用于生成目标 features 的值网格(将在此处评估偏依赖),当 method 为 'brute' 时,也用于生成补集特征的值。

featuresarray-like of {int, str, bool} 或 int 或 str

应计算偏依赖的特征(例如 [0])或交互特征对(例如 [(0, 1)])。

sample_weightarray-like,形状为 (n_samples,),默认为 None

样本权重用于计算模型输出的加权平均值。如果为 None,则样本权重相等。如果 sample_weight 不是 None,则 method 将设置为 'brute'。请注意,对于 kind='individual'sample_weight 被忽略。

1.3 版新增。

categorical_featuresarray-like,形状为 (n_features,) 或 (n_categorical_features,),dtype={bool, int, str},默认为 None

指示分类特征。

  • None:不将任何特征视为分类特征;

  • 布尔数组:形状为 (n_features,) 的布尔掩码,指示哪些特征是分类特征。因此,此数组的形状与 X.shape[1] 相同;

    表明哪些特征是分类的。因此,这个数组的形状与 X.shape[1] 相同;

  • 整数或字符串数组:指示分类特征的整数索引或字符串。

    表明分类特征。

1.2 版新增。

feature_namesarray-like,形状为 (n_features,),dtype=str,默认为 None

每个特征的名称;feature_names[i] 存放索引为 i 的特征名称。默认情况下,对于 NumPy 数组,特征名称对应于其数值索引;对于 pandas dataframe,特征名称对应于其列名。

1.2 版新增。

response_method{‘auto’, ‘predict_proba’, ‘decision_function’},默认为 ‘auto’

指定是将 predict_proba 还是 decision_function 用作目标响应。对于回归器,此参数将被忽略,响应始终是 predict 的输出。默认情况下,首先尝试 predict_proba,如果不存在则回退到 decision_function。如果 method 是 'recursion',则响应始终是 decision_function 的输出。

percentilesfloat 元组,默认为 (0.05, 0.95)

用于创建网格极值的下限和上限百分位数。必须在 [0, 1] 范围内。如果设置了 custom_values 参数,则此参数将被覆盖。

grid_resolutionint,默认为 100

网格上每个目标特征的等间距点数。如果设置了 custom_values 参数,则此参数将被覆盖。

custom_valuesdict

一个字典,将 features 元素的索引映射到应为该特征计算偏依赖的值数组。为特征设置值范围将覆盖 grid_resolutionpercentiles

有关如何使用此参数的示例,请参阅 如何使用 partial_dependence

1.7 版新增。

method{‘auto’, ‘recursion’, ‘brute’},默认为 ‘auto’

用于计算平均预测值的方法。

请参阅 此说明 以了解 'brute''recursion' 方法之间的差异。

kind{‘average’, ‘individual’, ‘both’},默认为 ‘average’

是返回数据集中所有样本的平均偏依赖,还是每个样本一个值,或者两者都返回。请参阅下面的返回值。

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

0.24 版新增。

返回
predictionsBunch

类字典对象,具有以下属性。

individualndarray,形状为 (n_outputs, n_instances, len(values[0]), len(values[1]), …)

网格中所有点对于 X 中所有样本的预测值。这也被称为个体条件期望(ICE)。仅当 kind='individual'kind='both' 时可用。

averagendarray,形状为 (n_outputs, len(values[0]), len(values[1]), …)

网格中所有点的预测值,在 X 中所有样本上(或在训练数据上,如果 method 是 'recursion')取平均。仅当 kind='average'kind='both' 时可用。

grid_values1d ndarray 序列

创建网格所用的值。生成的网格是 grid_values 中数组的笛卡尔积,其中 len(grid_values) == len(features)。每个数组 grid_values[j] 的大小是 grid_resolution,或是 X[:, j] 中唯一值的数量,取两者中较小的一个。

1.3 版新增。

n_outputs 对应于多类设置中的类别数量,或多输出回归的任务数量。对于经典回归和二元分类,n_outputs==1n_values_feature_j 对应于 grid_values[j] 的大小。

另请参阅

PartialDependenceDisplay.from_estimator

绘制偏依赖图。

PartialDependenceDisplay

偏依赖可视化。

示例

>>> X = [[0, 0, 2], [1, 0, 0]]
>>> y = [0, 1]
>>> from sklearn.ensemble import GradientBoostingClassifier
>>> gb = GradientBoostingClassifier(random_state=0).fit(X, y)
>>> partial_dependence(gb, features=[0], X=X, percentiles=(0, 1),
...                    grid_resolution=2) 
(array([[-4.52,  4.52]]), [array([ 0.,  1.])])