ExtraTreeRegressor#
- class sklearn.tree.ExtraTreeRegressor(*, criterion='squared_error', splitter='random', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=1.0, random_state=None, min_impurity_decrease=0.0, max_leaf_nodes=None, ccp_alpha=0.0, monotonic_cst=None)[原始碼]#
一個極端隨機化的樹迴歸器。
極端隨機樹 (Extra-trees) 的建構方式與傳統決策樹不同。在尋找最佳分割點以將節點的樣本分成兩組時,會針對每個隨機選取的
max_features
個特徵繪製隨機分割,並從中選擇最佳分割。當max_features
設定為 1 時,這相當於建立一個完全隨機的決策樹。警告:極端隨機樹應僅在集成方法中使用。
請在使用者指南中閱讀更多資訊。
- 參數:
- criterion{“squared_error”, “friedman_mse”, “absolute_error”, “poisson”}, default=”squared_error”
衡量分割品質的函數。支援的準則為: "squared_error" 代表均方誤差,這等同於作為特徵選擇準則的變異數縮減,並使用每個終端節點的平均值來最小化 L2 損失;"friedman_mse" 使用均方誤差搭配 Friedman 的改進分數來進行潛在分割;"absolute_error" 代表平均絕對誤差,使用每個終端節點的中位數來最小化 L1 損失;以及 "poisson" 使用 Poisson 偏差的縮減來尋找分割。
0.18 版本新增:平均絕對誤差 (MAE) 準則。
0.24 版本新增:Poisson 偏差準則。
- splitter{“random”, “best”}, default=”random”
用於選擇每個節點分割的策略。支援的策略為:"best" 選擇最佳分割,以及 "random" 選擇最佳隨機分割。
- max_depthint, default=None
樹的最大深度。如果為 None,則會擴展節點,直到所有葉節點都是純的,或直到所有葉節點包含少於 min_samples_split 個樣本。
- min_samples_splitint 或 float, default=2
分割內部節點所需的最小樣本數
如果為 int,則將
min_samples_split
視為最小值。如果為 float,則
min_samples_split
是一個分數,而ceil(min_samples_split * n_samples)
是每個分割的最小樣本數。
0.18 版本變更:新增了分數的 float 值。
- min_samples_leafint 或 float, default=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, default=0.0
葉節點所需的權重總和(所有輸入樣本的權重)的最小加權分數。當未提供 sample_weight 時,樣本具有相同的權重。
- max_featuresint, float, {“sqrt”, “log2”} 或 None, default=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,則
max_features=n_features
。
1.1 版本變更:
max_features
的預設值從"auto"
變更為1.0
。注意:搜尋分割點不會停止,直到找到至少一個節點樣本的有效分割,即使這需要實際檢查超過
max_features
個特徵。- random_stateint, RandomState 實例或 None, default=None
用於隨機選擇每次分割時使用的
max_features
。詳細資訊請參閱詞彙表。- min_impurity_decreasefloat, default=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 版本新增。
- max_leaf_nodesint, default=None
以最佳優先方式生長具有
max_leaf_nodes
的樹。最佳節點定義為雜質的相對減少。如果為 None,則葉節點數量不受限制。- ccp_alpha非負 float, default=0.0
用於最小成本複雜度剪枝的複雜度參數。將選擇成本複雜度小於
ccp_alpha
的最大子樹。預設情況下,不執行剪枝。詳情請參閱 最小成本複雜度剪枝。有關此類剪枝的範例,請參閱 使用成本複雜度剪枝的後剪枝決策樹。於 0.22 版本新增。
- monotonic_cstarray-like of int of shape (n_features), default=None
- 指示要對每個特徵強制執行的單調性約束。
1:單調遞增
0:無約束
-1:單調遞減
如果 monotonic_cst 為 None,則不套用約束。
- 以下情況不支持單調性約束:
多輸出迴歸(即當
n_outputs_ > 1
時),在具有缺失值的資料上訓練的迴歸。
詳情請參閱 使用者指南。
於 1.4 版本新增。
- 屬性:
- max_features_int
max_features 的推斷值。
- n_features_in_int
在 fit 期間看到的特徵數量。
於 0.24 版本新增。
- feature_names_in_ndarray of shape (
n_features_in_
,) 在 fit 期間看到的特徵名稱。僅當
X
具有全部為字串的特徵名稱時定義。於 1.0 版本新增。
feature_importances_
ndarray of shape (n_features,)回傳特徵重要性。
- n_outputs_int
執行
fit
時的輸出數量。- tree_Tree instance
底層的 Tree 物件。有關 Tree 物件的屬性,請參閱
help(sklearn.tree._tree.Tree)
,以及有關這些屬性的基本用法,請參閱 了解決策樹結構。
另請參閱
ExtraTreeClassifier (極端隨機樹分類器)
一個極度隨機化的樹分類器。
sklearn.ensemble.ExtraTreesClassifier
一個極度隨機樹分類器。
sklearn.ensemble.ExtraTreesRegressor
一個極度隨機樹迴歸器。
註釋
控制樹大小的參數(例如
max_depth
、min_samples_leaf
等)的預設值會導致完全生長且未剪枝的樹,這些樹在某些資料集上可能會非常大。為了減少記憶體消耗,應透過設定這些參數值來控制樹的複雜度和大小。參考文獻
[1]P. Geurts、D. Ernst 和 L. Wehenkel,“極度隨機化的樹”,機器學習,63(1),3-42,2006 年。
範例
>>> from sklearn.datasets import load_diabetes >>> from sklearn.model_selection import train_test_split >>> from sklearn.ensemble import BaggingRegressor >>> from sklearn.tree import ExtraTreeRegressor >>> X, y = load_diabetes(return_X_y=True) >>> X_train, X_test, y_train, y_test = train_test_split( ... X, y, random_state=0) >>> extra_tree = ExtraTreeRegressor(random_state=0) >>> reg = BaggingRegressor(extra_tree, random_state=0).fit( ... X_train, y_train) >>> reg.score(X_test, y_test) 0.33...
- apply(X, check_input=True)[source]#
回傳每個樣本預測為的葉節點索引。
於 0.17 版本新增。
- 參數:
- X{array-like, sparse matrix} of shape (n_samples, n_features)
輸入樣本。在內部,它將轉換為
dtype=np.float32
,如果提供了稀疏矩陣,則轉換為稀疏的csr_matrix
。- check_inputbool, default=True
允許繞過多項輸入檢查。除非您知道自己在做什麼,否則請勿使用此參數。
- 回傳:
- X_leavesarray-like of shape (n_samples,)
對於 X 中的每個資料點 x,回傳 x 最終所在的葉節點索引。葉節點在
[0; self.tree_.node_count)
範圍內編號,可能會有編號間隔。
- cost_complexity_pruning_path(X, y, sample_weight=None)[source]#
在最小成本複雜度剪枝期間計算剪枝路徑。
有關剪枝過程的詳細資訊,請參閱 最小成本複雜度剪枝。
- 參數:
- X{array-like, sparse matrix} of shape (n_samples, n_features)
訓練輸入樣本。在內部,它將轉換為
dtype=np.float32
,如果提供了稀疏矩陣,則轉換為稀疏的csc_matrix
。- yarray-like of shape (n_samples,) or (n_samples, n_outputs)
目標值(類別標籤)為整數或字串。
- sample_weightarray-like of shape (n_samples,), default=None
樣本權重。如果為 None,則樣本權重相等。在每個節點中搜尋分割時,將忽略會建立淨權重為零或負權重的子節點的分割。如果分割會導致任何單一類別在任一子節點中攜帶負權重,也會忽略這些分割。
- 回傳:
- 回傳:
ccp_path
Bunch
- 類似字典的物件,具有以下屬性。
ccp_alphasndarray
- 剪枝期間子樹的有效 alpha 值。
impuritiesndarray
- decision_path(X, check_input=True)[source]#
回傳樹中的決策路徑。
於 0.18 版本新增。
- 參數:
- X{array-like, sparse matrix} of shape (n_samples, n_features)
輸入樣本。在內部,它將轉換為
dtype=np.float32
,如果提供了稀疏矩陣,則轉換為稀疏的csr_matrix
。- check_inputbool, default=True
允許繞過多項輸入檢查。除非您知道自己在做什麼,否則請勿使用此參數。
- 回傳:
- indicatorsparse matrix of shape (n_samples, n_nodes)
回傳節點指示器 CSR 矩陣,其中非零元素指示樣本通過的節點。
- property feature_importances_#
回傳特徵重要性。
特徵的重要性計算為該特徵帶來的準則(標準化)總減少量。它也稱為 Gini 重要性。
警告:基於雜質的特徵重要性對於高基數特徵(許多唯一值)可能會產生誤導。請參考
sklearn.inspection.permutation_importance
作為替代方案。- 回傳:
- feature_importances_形狀為 (n_features,) 的 ndarray
特徵的標準化總準則減少量(吉尼重要性)。
- fit(X, y, sample_weight=None, check_input=True)[原始碼]#
從訓練集 (X, y) 建立決策樹迴歸器。
- 參數:
- X{array-like, sparse matrix} of shape (n_samples, n_features)
訓練輸入樣本。在內部,它將轉換為
dtype=np.float32
,如果提供了稀疏矩陣,則轉換為稀疏的csc_matrix
。- yarray-like of shape (n_samples,) or (n_samples, n_outputs)
目標值(實數)。為達到最大效率,請使用
dtype=np.float64
和order='C'
。- sample_weightarray-like of shape (n_samples,), default=None
樣本權重。如果為 None,則樣本權重相等。在每個節點中搜尋分割時,將忽略會建立淨權重為零或負權重的子節點的分割。
- check_inputbool, default=True
允許繞過多項輸入檢查。除非您知道自己在做什麼,否則請勿使用此參數。
- 回傳:
- selfDecisionTreeRegressor
擬合後的估算器。
- get_metadata_routing()[原始碼]#
取得此物件的中繼資料路由。
請查看使用者指南,瞭解路由機制如何運作。
- 回傳:
- routingMetadataRequest
封裝路由資訊的
MetadataRequest
。
- get_params(deep=True)[原始碼]#
取得此估算器的參數。
- 參數:
- deepbool,預設為 True
如果為 True,將傳回此估算器以及包含的子物件(這些子物件也是估算器)的參數。
- 回傳:
- paramsdict
參數名稱對應到其值。
- predict(X, check_input=True)[原始碼]#
預測 X 的類別或迴歸值。
對於分類模型,會傳回 X 中每個樣本的預測類別。對於迴歸模型,會傳回基於 X 的預測值。
- 參數:
- X{array-like, sparse matrix} of shape (n_samples, n_features)
輸入樣本。在內部,它將轉換為
dtype=np.float32
,如果提供了稀疏矩陣,則轉換為稀疏的csr_matrix
。- check_inputbool, default=True
允許繞過多項輸入檢查。除非您知道自己在做什麼,否則請勿使用此參數。
- 回傳:
- yarray-like of shape (n_samples,) or (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
是估算器擬合所使用的樣本數。- yarray-like of shape (n_samples,) or (n_samples, n_outputs)
X
的真實值。- sample_weightarray-like of shape (n_samples,), default=None
樣本權重。
- 回傳:
- scorefloat
\(R^2\) 為
self.predict(X)
相對於y
的值。
註釋
當在回歸器上呼叫
score
時使用的 \(R^2\) 分數,從 0.23 版本開始使用multioutput='uniform_average'
,以與r2_score
的預設值保持一致。這會影響所有多輸出回歸器的score
方法(除了MultiOutputRegressor
)。
- set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') ExtraTreeRegressor [原始碼]#
請求傳遞給
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$') ExtraTreeRegressor [原始碼]#
請求傳遞給
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物件
已更新的物件。