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, method='auto', kind='average')#

部分依赖于 features

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

更多信息请参阅 用户指南

Warning

对于 GradientBoostingClassifierGradientBoostingRegressor ,默认使用的 'recursion' 方法不会考虑 boosting 过程中的 init 预测器。实际上,这将产生与 'brute' 方法相同的值,直到目标响应中的一个常量偏移,前提是 init 是一个常量估计器(这是默认设置)。然而,如果 init 不是常量估计器,由于偏移量会依赖于样本, 'recursion' 方法的部分依赖值将是不正确的。最好使用 'brute' 方法。请注意,这仅适用于 GradientBoostingClassifierGradientBoostingRegressor ,不适用于 HistGradientBoostingClassifierHistGradientBoostingRegressor

Parameters:
estimatorBaseEstimator

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

X{array-like, sparse matrix 或 dataframe} of shape (n_samples, n_features)

X 用于生成目标 features 的值网格(其中将评估部分依赖), 并且在 method 为 ‘brute’ 时还用于生成补全特征的值。

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

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

sample_weightarray-like of shape (n_samples,), default=None

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

Added in version 1.3.

categorical_featuresarray-like of shape (n_features,) 或 shape (n_categorical_features,), dtype={bool, int, str}, default=None

指示分类特征。

  • None :不考虑任何特征为分类特征;

  • 布尔数组:形状为 (n_features,) 的布尔掩码

    指示哪些特征是分类特征。因此,该数组的形状与 X.shape[1] 相同;

  • 整数或字符串数组:整数索引或字符串

    指示分类特征。

Added in version 1.2.

feature_namesarray-like of shape (n_features,), dtype=str, default=None

每个特征的名称; feature_names[i] 持有索引为 i 的特征的名称。 默认情况下,特征的名称对应于它们的数字索引(对于 NumPy 数组)或它们的列名(对于 pandas dataframe)。

Added in version 1.2.

response_method{‘auto’, ‘predict_proba’, ‘decision_function’}, default=’auto’

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

percentilestuple of float, default=(0.05, 0.95)

用于创建网格极端值的下限和上限百分位数。必须在 [0, 1] 范围内。

grid_resolutionint, default=100

网格上每个目标特征的等间距点数。

method{‘auto’, ‘recursion’, ‘brute’}, default=’auto’

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

  • 'recursion' 仅支持某些基于树的估计器 (即 GradientBoostingClassifierGradientBoostingRegressorHistGradientBoostingClassifierHistGradientBoostingRegressorDecisionTreeRegressorRandomForestRegressor 、 )当 kind='average' 时。 这种方法在速度上更高效。 对于分类器,目标响应始终是决策函数,而不是预测概率。由于 'recursion' 方法隐式地通过设计计算个体条件期望(ICE)的平均值,因此它与 ICE 不兼容,因此 kind 必须是 'average'

  • 'brute' 适用于任何估计器,但计算量更大。

  • 'auto' :对于支持它的估计器使用 'recursion' ,否则使用 'brute' 。如果 sample_weight 不为 None ,则无论估计器如何,都使用 'brute'

请参阅 此注释 了解 'brute''recursion' 方法之间的差异。

kind{‘average’, ‘individual’, ‘both’}, default=’average’

是否返回数据集中所有样本的部分依赖平均值或每个样本一个值或两者。 请参阅返回值。

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

Added in version 0.24.

Returns:
predictionsBunch

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

individualndarray of shape (n_outputs, n_instances, len(values[0]), len(values[1]), …)

所有样本在网格上所有点的预测。这也称为个体 条件期望(ICE)。 仅在 kind='individual'kind='both' 时可用。

averagendarray of shape (n_outputs, len(values[0]), len(values[1]), …)

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

grid_valuesseq of 1d ndarrays

用于创建网格的值。生成的 网格是 grid_values 中数组的笛卡尔积,其中 len(grid_values) == len(features) 。每个数组 grid_values[j] 的大小要么是 grid_resolution ,要么是 X[:, j] 中的唯一值数,以较小者为准。

Added in version 1.3.

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

See also

PartialDependenceDisplay.from_estimator

绘制部分依赖。

PartialDependenceDisplay

部分依赖可视化。

Examples

>>> 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.])])