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