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
的偏依赖。特征(或一组特征)的偏依赖对应于估计器在特征每个可能值上的平均响应。
更多信息请阅读 偏依赖图和个体条件期望图 和 用户指南。
警告
对于
GradientBoostingClassifier
和GradientBoostingRegressor
,'recursion'
方法(默认使用)将不考虑提升过程的init
预测器。实际上,这会产生与'brute'
相同的值,仅目标响应存在一个常数偏移,前提是init
是一个常数估计器(这是默认情况)。但是,如果init
不是一个常数估计器,那么'recursion'
的偏依赖值将不正确,因为偏移量会依赖于样本。此时最好使用'brute'
方法。请注意,这仅适用于GradientBoostingClassifier
和GradientBoostingRegressor
,不适用于HistGradientBoostingClassifier
和HistGradientBoostingRegressor
。- 参数:
- estimatorBaseEstimator
一个已拟合的估计器对象,实现了 predict、predict_proba 或 decision_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_resolution
和percentiles
。有关如何使用此参数的示例,请参阅 如何使用 partial_dependence。
1.7 版新增。
- method{‘auto’, ‘recursion’, ‘brute’},默认为 ‘auto’
用于计算平均预测值的方法。
'recursion'
仅支持某些基于树的估计器(即GradientBoostingClassifier
、GradientBoostingRegressor
、HistGradientBoostingClassifier
、HistGradientBoostingRegressor
、DecisionTreeRegressor
、RandomForestRegressor
),当kind='average'
时。这在速度方面更高效。使用此方法时,分类器的目标响应始终是决策函数,而不是预测概率。由于'recursion'
方法通过设计隐式计算个体条件期望(ICE)的平均值,因此它与 ICE 不兼容,因此kind
必须为'average'
。'brute'
支持任何估计器,但计算量更大。'auto'
:对于支持'recursion'
的估计器使用'recursion'
,否则使用'brute'
。如果sample_weight
不为None
,则无论估计器如何,都使用'brute'
。
请参阅 此说明 以了解
'brute'
和'recursion'
方法之间的差异。- kind{‘average’, ‘individual’, ‘both’},默认为 ‘average’
是返回数据集中所有样本的平均偏依赖,还是每个样本一个值,或者两者都返回。请参阅下面的返回值。
请注意,快速的
method='recursion'
选项仅适用于kind='average'
和sample_weights=None
。计算个体依赖性并进行加权平均需要使用较慢的method='brute'
。0.24 版新增。
- 返回:
- predictions
Bunch
类字典对象,具有以下属性。
- 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==1
。n_values_feature_j
对应于grid_values[j]
的大小。
- predictions
另请参阅
示例
>>> 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.])])