ExtraTreesRegressor#
- class sklearn.ensemble.ExtraTreesRegressor(n_estimators=100, *, criterion='squared_error', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=1.0, max_leaf_nodes=None, min_impurity_decrease=0.0, bootstrap=False, oob_score=False, n_jobs=None, random_state=None, verbose=0, warm_start=False, ccp_alpha=0.0, max_samples=None, monotonic_cst=None)[原始碼]#
一個極端隨機樹迴歸器。
此類別實作一個元估計器,在資料集的各種子樣本上擬合多個隨機決策樹(又稱極端隨機樹),並使用平均來提高預測準確性並控制過度擬合。
請參閱使用者指南以了解更多資訊。
- 參數:
- n_estimatorsint,預設值=100
森林中樹的數量。
在 0.22 版本中變更:
n_estimators
的預設值在 0.22 版本中從 10 變更為 100。- criterion{“squared_error”, “absolute_error”, “friedman_mse”, “poisson”},預設值=”squared_error”
用於衡量分割品質的函數。支援的標準包括:用於均方誤差的「squared_error」(等於作為特徵選擇標準的變異數縮減,並使用每個終端節點的平均值最小化 L2 損失)、「friedman_mse」(使用均方誤差和 Friedman 的改進分數來計算潛在分割)、「absolute_error」(用於平均絕對誤差,使用每個終端節點的中位數最小化 L1 損失),以及「poisson」(使用 Poisson 偏差的減少來尋找分割)。使用「absolute_error」訓練比使用「squared_error」慢得多。
在 0.18 版本中新增:平均絕對誤差 (MAE) 標準。
- max_depthint,預設值=None
樹的最大深度。如果為 None,則會擴展節點,直到所有葉節點都是純的,或直到所有葉節點包含的樣本少於 min_samples_split 個。
- min_samples_splitint 或 float,預設值=2
分割內部節點所需的最小樣本數
如果為 int,則將
min_samples_split
視為最小值。如果為 float,則
min_samples_split
是一個分數,而ceil(min_samples_split * n_samples)
是每個分割的最小樣本數。
在 0.18 版本中變更:新增了分數的 float 值。
- min_samples_leafint 或 float,預設值=1
葉節點所需的最小樣本數。只有在每個左右分支中至少保留
min_samples_leaf
個訓練樣本時,才會考慮任何深度的分割點。這可能會產生平滑模型的效果,尤其是在迴歸中。如果為 int,則將
min_samples_leaf
視為最小值。如果為 float,則
min_samples_leaf
是一個分數,而ceil(min_samples_leaf * n_samples)
是每個節點的最小樣本數。
在 0.18 版本中變更:新增了分數的 float 值。
- min_weight_fraction_leaffloat,預設值=0.0
葉節點所需的權重總和(所有輸入樣本的權重)的最小加權分數。當未提供 sample_weight 時,樣本具有相等的權重。
- max_features{“sqrt”, “log2”, None}, int 或 float,預設值=1.0
尋找最佳分割時要考慮的特徵數量
如果為 int,則在每次分割時考慮
max_features
個特徵。如果為 float,則
max_features
是一個分數,並且在每次分割時會考慮max(1, int(max_features * n_features_in_))
個特徵。如果為「sqrt」,則
max_features=sqrt(n_features)
。如果為「log2」,則
max_features=log2(n_features)
。如果為 None 或 1.0,則
max_features=n_features
。
注意
預設值 1.0 等同於 Bagged Trees,設定較小的值可以獲得更高的隨機性,例如 0.3。
版本 1.1 更新:
max_features
的預設值從"auto"
變更為 1.0。注意:在找到節點樣本的至少一個有效分割之前,不會停止搜尋分割點,即使實際上需要檢查超過
max_features
個特徵也是如此。- max_leaf_nodes int,預設值=None
以最佳優先的方式使用
max_leaf_nodes
來成長樹狀結構。最佳節點定義為雜質的相對減少量。如果為 None,則葉節點數量不受限制。- min_impurity_decrease float,預設值=0.0
如果分割導致雜質減少量大於或等於此值,則會分割節點。
加權雜質減少量公式如下:
N_t / N * (impurity - N_t_R / N_t * right_impurity - N_t_L / N_t * left_impurity)
其中
N
是樣本總數,N_t
是當前節點的樣本數,N_t_L
是左子節點中的樣本數,而N_t_R
是右子節點中的樣本數。如果傳遞了
sample_weight
,則N
、N_t
、N_t_R
和N_t_L
都指的是加權總和。在版本 0.19 中新增。
- bootstrap bool,預設值=False
在建立樹狀結構時是否使用 bootstrap 樣本。如果為 False,則使用整個資料集來建立每棵樹。
- oob_score bool 或可呼叫物件,預設值=False
是否使用袋外樣本來估計泛化分數。預設情況下,使用
r2_score
。提供具有簽名metric(y_true, y_pred)
的可呼叫物件以使用自訂指標。僅在bootstrap=True
時可用。- n_jobs int,預設值=None
平行執行的作業數。
fit
、predict
、decision_path
和apply
都會在樹狀結構上進行平行處理。None
表示 1,除非在joblib.parallel_backend
環境中。-1
表示使用所有處理器。有關更多詳細資訊,請參閱詞彙表。- random_state int、RandomState 實例或 None,預設值=None
控制 3 個隨機性來源
建立樹狀結構時使用的樣本的 bootstrap(如果
bootstrap=True
)在每個節點尋找最佳分割點時要考慮的特徵採樣(如果
max_features < n_features
)每個
max_features
的分割點繪製
有關詳細資訊,請參閱 詞彙表。
- verbose int,預設值=0
控制擬合和預測時的詳細程度。
- warm_start bool,預設值=False
當設定為
True
時,重複使用先前呼叫的擬合解決方案,並向集合中新增更多估計器,否則,只需擬合一個全新的森林。 有關詳細資訊,請參閱 詞彙表 和 擬合其他樹。- ccp_alpha 非負浮點數,預設值=0.0
用於最小成本複雜度剪枝的複雜度參數。將選擇成本複雜度小於
ccp_alpha
的最大子樹。預設情況下,不執行剪枝。有關詳細資訊,請參閱 最小成本複雜度剪枝。 有關此類剪枝的範例,請參閱使用成本複雜度剪枝來後剪枝決策樹。在版本 0.22 中新增。
- max_samples int 或 float,預設值=None
如果 bootstrap 為 True,則從 X 中提取的樣本數,用於訓練每個基礎估計器。
如果為 None(預設值),則提取
X.shape[0]
個樣本。如果為 int,則提取
max_samples
個樣本。如果為 float,則提取
max_samples * X.shape[0]
個樣本。因此,max_samples
應在區間(0.0, 1.0]
中。
在版本 0.22 中新增。
- monotonic_cst 形狀為 (n_features) 的整數類陣列,預設值=None
- 指示要對每個特徵強制執行的單調性約束。
1:單調遞增
0:無約束
-1:單調遞減
如果 monotonic_cst 為 None,則不套用任何約束。
- 不支援以下情況的單調性約束:
多輸出迴歸(即當
n_outputs_ > 1
時),在具有遺失值的資料上訓練的迴歸。
在使用者指南中閱讀更多資訊。
在版本 1.4 中新增。
- 屬性:
- estimator_
ExtraTreeRegressor
用於建立已擬合子估計器集合的子估計器範本。
在版本 1.2 中新增:
base_estimator_
已重新命名為estimator_
。- estimators_ DecisionTreeRegressor 的列表
已擬合子估計器的集合。
feature_importances_
形狀為 (n_features,) 的 ndarray基於雜質的特徵重要性。
- n_features_in_ int
在擬合期間看到的特徵數量。
在版本 0.24 中新增。
- feature_names_in_形狀為 (
n_features_in_
,) 的 ndarray 在 fit 期間看到的特徵名稱。僅當
X
具有全部為字串的特徵名稱時才定義。於 1.0 版本新增。
- n_outputs_整數
輸出的數量。
- oob_score_浮點數
使用袋外估計獲得的訓練數據集分數。僅當
oob_score
為 True 時,此屬性才存在。- oob_prediction_形狀為 (n_samples,) 或 (n_samples, n_outputs) 的 ndarray
使用袋外估計在訓練集上計算的預測。僅當
oob_score
為 True 時,此屬性才存在。estimators_samples_
陣列列表每個基本估計器所繪製的樣本子集。
- estimator_
另請參閱
ExtraTreesClassifier
具有隨機分割的極端隨機樹分類器。
RandomForestClassifier
具有最佳分割的隨機森林分類器。
RandomForestRegressor
使用具有最佳分割的樹的集成迴歸器。
注意事項
用於控制樹大小的參數(例如
max_depth
、min_samples_leaf
等)的預設值會導致完全生長且未修剪的樹,這在某些數據集上可能會非常大。為了減少內存消耗,應通過設定這些參數值來控制樹的複雜性和大小。參考文獻
[1]P. Geurts, D. Ernst., and L. Wehenkel, “Extremely randomized trees”, Machine Learning, 63(1), 3-42, 2006.
範例
>>> from sklearn.datasets import load_diabetes >>> from sklearn.model_selection import train_test_split >>> from sklearn.ensemble import ExtraTreesRegressor >>> X, y = load_diabetes(return_X_y=True) >>> X_train, X_test, y_train, y_test = train_test_split( ... X, y, random_state=0) >>> reg = ExtraTreesRegressor(n_estimators=100, random_state=0).fit( ... X_train, y_train) >>> reg.score(X_test, y_test) 0.2727...
- apply(X)[原始碼]#
將森林中的樹應用於 X,返回葉節點索引。
- 參數:
- X形狀為 (n_samples, n_features) 的類陣列、稀疏矩陣
輸入樣本。在內部,其 dtype 將會轉換為
dtype=np.float32
。如果提供稀疏矩陣,它將會轉換為稀疏的csr_matrix
。
- 返回:
- X_leaves形狀為 (n_samples, n_estimators) 的 ndarray
對於 X 中的每個數據點 x 和森林中的每棵樹,返回 x 最終所在的葉節點的索引。
- decision_path(X)[原始碼]#
返回森林中的決策路徑。
於 0.18 版本新增。
- 參數:
- X形狀為 (n_samples, n_features) 的類陣列、稀疏矩陣
輸入樣本。在內部,其 dtype 將會轉換為
dtype=np.float32
。如果提供稀疏矩陣,它將會轉換為稀疏的csr_matrix
。
- 返回:
- indicator形狀為 (n_samples, n_nodes) 的稀疏矩陣
返回節點指示器矩陣,其中非零元素表示樣本通過節點。矩陣為 CSR 格式。
- n_nodes_ptr形狀為 (n_estimators + 1,) 的 ndarray
來自 indicator[n_nodes_ptr[i]:n_nodes_ptr[i+1]] 的列給出了第 i 個估計器的指示器值。
- property estimators_samples_#
每個基本估計器所繪製的樣本子集。
返回一個動態生成的索引列表,識別用於擬合集成中每個成員的樣本,即袋內樣本。
注意:該列表在每次調用屬性時都會重新建立,以通過不儲存取樣數據來減少物件內存佔用。因此,獲取屬性可能比預期的慢。
- property feature_importances_#
基於雜質的特徵重要性。
數值越高,特徵越重要。特徵的重要性計算為該特徵帶來的準則(歸一化)總減少量。它也稱為 Gini 重要性。
警告:基於雜質的特徵重要性對於高基數特徵(許多唯一值)可能會產生誤導。請參閱
sklearn.inspection.permutation_importance
作為替代方法。- 返回:
- feature_importances_形狀為 (n_features,) 的 ndarray
除非所有樹都是僅由根節點組成的單節點樹,否則此陣列的值總和為 1,在這種情況下,它將是一個零陣列。
- fit(X, y, sample_weight=None)[原始碼]#
從訓練集 (X, y) 建立樹森林。
- 參數:
- X形狀為 (n_samples, n_features) 的類陣列、稀疏矩陣
訓練輸入樣本。在內部,其 dtype 將會轉換為
dtype=np.float32
。如果提供稀疏矩陣,它將會轉換為稀疏的csc_matrix
。- y形狀為 (n_samples,) 或 (n_samples, n_outputs) 的類陣列
目標值(分類中的類別標籤,迴歸中的實數)。
- sample_weight形狀為 (n_samples,) 的類陣列,預設值=None
樣本權重。如果為 None,則樣本權重相等。在每個節點中尋找分割時,將忽略會建立淨權重為零或負數的子節點的分割。在分類的情況下,如果分割會導致任何一個子節點中任何單個類別攜帶負權重,也會忽略分割。
- 返回:
- self物件
已擬合的估計器。
- get_metadata_routing()[原始碼]#
取得此物件的中繼資料路由。
請查看 使用指南 以了解路由機制如何運作。
- 返回:
- routingMetadataRequest
一個
MetadataRequest
,封裝了路由資訊。
- get_params(deep=True)[原始碼]#
取得此估計器的參數。
- 參數:
- deepbool, default=True
若為 True,將會返回此估計器及包含的子物件(亦為估計器)的參數。
- 返回:
- paramsdict
參數名稱對應其值的字典。
- predict(X)[原始碼]#
預測 X 的迴歸目標。
輸入樣本的預測迴歸目標是計算森林中所有樹的平均預測迴歸目標。
- 參數:
- X形狀為 (n_samples, n_features) 的類陣列、稀疏矩陣
輸入樣本。在內部,其 dtype 將會轉換為
dtype=np.float32
。如果提供稀疏矩陣,它將會轉換為稀疏的csr_matrix
。
- 返回:
- yndarray,形狀為 (n_samples,) 或 (n_samples, n_outputs)
預測值。
- score(X, y, sample_weight=None)[原始碼]#
返回預測的決定係數。
決定係數 \(R^2\) 定義為 \((1 - \frac{u}{v})\),其中 \(u\) 是殘差平方和
((y_true - y_pred)** 2).sum()
,而 \(v\) 是總平方和((y_true - y_true.mean()) ** 2).sum()
。最好的分數是 1.0,並且可能是負數(因為模型可能任意更差)。一個總是預測y
的期望值而忽略輸入特徵的常數模型,會得到 \(R^2\) 分數 0.0。- 參數:
- X類陣列,形狀為 (n_samples, n_features)
測試樣本。對於某些估計器,這可能是一個預先計算的核矩陣,或是一個形狀為
(n_samples, n_samples_fitted)
的通用物件列表,其中n_samples_fitted
是估計器擬合時使用的樣本數。- y形狀為 (n_samples,) 或 (n_samples, n_outputs) 的類陣列
X 的真實值。
- sample_weight形狀為 (n_samples,) 的類陣列,預設值=None
樣本權重。
- 返回:
- score浮點數
self.predict(X)
相對於y
的 \(R^2\)。
注意事項
當在迴歸器上呼叫
score
時使用的 \(R^2\) 分數,從 0.23 版本開始使用multioutput='uniform_average'
,以保持與r2_score
的預設值一致。這會影響所有多輸出迴歸器的score
方法(除了MultiOutputRegressor
)。
- set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') ExtraTreesRegressor [原始碼]#
請求傳遞至
fit
方法的中繼資料。請注意,此方法僅在
enable_metadata_routing=True
時相關(請參閱sklearn.set_config
)。請參閱 使用指南 以了解路由機制如何運作。每個參數的選項如下:
True
:請求中繼資料,並在提供時傳遞至fit
。如果未提供中繼資料,則忽略此請求。False
:不請求中繼資料,並且元估計器不會將其傳遞至fit
。None
:不請求中繼資料,如果使用者提供,元估計器將會引發錯誤。str
:中繼資料應使用此給定的別名傳遞至元估計器,而不是原始名稱。
預設值(
sklearn.utils.metadata_routing.UNCHANGED
)會保留現有的請求。這允許您更改某些參數的請求,而其他參數則保持不變。在 1.3 版本中新增。
注意
僅當此估計器被用作元估計器的子估計器時,此方法才相關,例如在
Pipeline
中使用。否則,它沒有任何作用。- 參數:
- sample_weightstr、True、False 或 None,預設值為 sklearn.utils.metadata_routing.UNCHANGED
fit
中的sample_weight
參數的中繼資料路由。
- 返回:
- self物件
更新後的物件。
- set_params(**params)[原始碼]#
設定此估算器的參數。
此方法適用於簡單的估算器以及巢狀物件(例如
Pipeline
)。後者具有<component>__<parameter>
形式的參數,因此可以更新巢狀物件的每個元件。- 參數:
- **paramsdict
估算器參數。
- 返回:
- self估算器實例
估算器實例。
- set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') ExtraTreesRegressor [原始碼]#
請求傳遞至
score
方法的中繼資料。請注意,此方法僅在
enable_metadata_routing=True
時相關(請參閱sklearn.set_config
)。請參閱 使用指南 以了解路由機制如何運作。每個參數的選項如下:
True
:請求中繼資料,並在提供時將其傳遞至score
。如果未提供中繼資料,則會忽略該請求。False
:不請求中繼資料,且元估算器不會將其傳遞至score
。None
:不請求中繼資料,如果使用者提供,元估計器將會引發錯誤。str
:中繼資料應使用此給定的別名傳遞至元估計器,而不是原始名稱。
預設值(
sklearn.utils.metadata_routing.UNCHANGED
)會保留現有的請求。這允許您更改某些參數的請求,而其他參數則保持不變。在 1.3 版本中新增。
注意
僅當此估計器被用作元估計器的子估計器時,此方法才相關,例如在
Pipeline
中使用。否則,它沒有任何作用。- 參數:
- sample_weightstr、True、False 或 None,預設值為 sklearn.utils.metadata_routing.UNCHANGED
score
中sample_weight
參數的中繼資料路由。
- 返回:
- self物件
更新後的物件。