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
的部分依賴 (Partial dependence)。特徵(或一組特徵)的部分依賴性對應於估計器對於特徵每個可能值的平均響應。
請參閱使用者指南以了解更多資訊。
警告
對於
GradientBoostingClassifier
和GradientBoostingRegressor
,'recursion'
方法(預設使用)不會考慮 boosting 過程的init
預測器。實際上,如果init
是一個常數估計器(這是預設值),則這將產生與'brute'
相同的值,直到目標響應中的常數偏移量。但是,如果init
不是常數估計器,則'recursion'
的部分依賴值將不正確,因為偏移量將取決於樣本。最好使用'brute'
方法。請注意,這僅適用於GradientBoostingClassifier
和GradientBoostingRegressor
,而不適用於HistGradientBoostingClassifier
和HistGradientBoostingRegressor
。- 參數:
- estimatorBaseEstimator
一個已擬合的估計器物件,實現了 predict、predict_proba 或 decision_function。不支援多輸出-多類別分類器。
- X形狀為 (n_samples, n_features) 的類陣列、稀疏矩陣或資料框
X
用於為目標features
生成值網格(將在其中評估部分依賴性),並且在method
為 'brute' 時,也用於生成補全特徵的值。- features類陣列,包含 {int, str, bool} 或 int 或 str
應計算部分依賴性的特徵 (例如
[0]
) 或相互作用特徵對 (例如[(0, 1)]
)。- sample_weight形狀為 (n_samples,) 的類陣列,預設值=None
樣本權重用於在平均模型輸出時計算加權平均值。如果為
None
,則樣本的權重相等。如果sample_weight
不是None
,則method
將被設定為'brute'
。請注意,對於kind='individual'
,sample_weight
會被忽略。版本 1.3 新增。
- categorical_features形狀為 (n_features,) 或形狀為 (n_categorical_features,) 的類陣列,dtype={bool, int, str},預設值=None
指示類別特徵。
None
:不將任何特徵視為類別特徵;- 布林值類陣列:形狀為
(n_features,)
的布林遮罩 指示哪些特徵是類別特徵。因此,此陣列的形狀與
X.shape[1]
相同;
- 布林值類陣列:形狀為
- 整數或字串類陣列:整數索引或字串
指示類別特徵。
版本 1.2 新增。
- feature_names形狀為 (n_features,),dtype=str 的類陣列,預設值=None
每個特徵的名稱;
feature_names[i]
保存索引為i
的特徵的名稱。預設情況下,特徵的名稱對應於 NumPy 陣列的數字索引和 pandas 資料框的欄名稱。版本 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] 範圍內。
- grid_resolutionint,預設值=100
網格上每個目標特徵的等間隔點數量。
- method{‘auto’, ‘recursion’, ‘brute’},預設值=’auto’
用於計算平均預測值的方法
'recursion'
僅支援某些基於樹的估算器(即GradientBoostingClassifier
、GradientBoostingRegressor
、HistGradientBoostingClassifier
、HistGradientBoostingRegressor
、DecisionTreeRegressor
、RandomForestRegressor
),當kind='average'
時。這在速度方面更有效率。使用此方法,分類器的目標響應始終是決策函數,而不是預測機率。由於'recursion'
方法在設計上隱式計算了個別條件期望 (ICE) 的平均值,因此它與 ICE 不相容,因此kind
必須為'average'
。'brute'
支援任何估算器,但計算量更大。'auto'
:對於支援的估算器使用'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
類似字典的物件,具有以下屬性。
- individual形狀為 (n_outputs, n_instances, len(values[0]), len(values[1]), …) 的 ndarray
所有樣本在 X 中,網格中所有點的預測值。這也稱為個別條件期望 (ICE)。僅當
kind='individual'
或kind='both'
時可用。- average形狀為 (n_outputs, len(values[0]), len(values[1]), …) 的 ndarray
網格中所有點的預測值,在 X 中的所有樣本上平均(如果
method
為 'recursion',則在訓練資料上平均)。僅當kind='average'
或kind='both'
時可用。- grid_values1 維 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
另請參閱
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.])])