當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python sklearn ExtraTreeRegressor用法及代碼示例


本文簡要介紹python語言中 sklearn.tree.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='auto', random_state=None, min_impurity_decrease=0.0, max_leaf_nodes=None, ccp_alpha=0.0)

一個非常隨機的樹回歸器。

Extra-trees 與經典決策樹的構建方式不同。在尋找將節點樣本分成兩組的最佳分割時,會為每個 max_features 隨機選擇的特征繪製隨機分割,並選擇其中的最佳分割。當max_features 設置為 1 時,這相當於構建一個完全隨機的決策樹。

警告:Extra-trees 隻能在 ensemble 方法中使用。

在用戶指南中閱讀更多信息。

參數

criterion{“squared_error”,“friedman_mse”},默認=”squared_error”

測量分割質量的函數。支持的標準是均方誤差的“squared_error”,它等於作為特征選擇標準的方差減少和平均絕對誤差的“mae”。

splitter{“random”, “best”},默認=”random”

用於在每個節點處選擇拆分的策略。支持的策略是“best” 選擇最佳分割和“random” 選擇最佳隨機分割。

max_depth整數,默認=無

樹的最大深度。如果沒有,則擴展節點直到所有葉子都是純的或直到所有葉子包含少於min_samples_split 個樣本。

min_samples_splitint 或浮點數,默認=2

拆分內部節點所需的最小樣本數:

  • 如果是 int,則將 min_samples_split 視為最小數字。
  • 如果是浮點數,那麽 min_samples_split 是一個分數,而 ceil(min_samples_split * n_samples) 是每個拆分的最小樣本數。
min_samples_leafint 或浮點數,默認=1

葉節點所需的最小樣本數。隻有在左右分支中的每個分支中至少留下min_samples_leaf 訓練樣本時,才會考慮任何深度的分割點。這可能具有平滑模型的效果,尤其是在回歸中。

  • 如果是 int,則將 min_samples_leaf 視為最小數字。
  • 如果是浮點數,那麽 min_samples_leaf 是分數,而 ceil(min_samples_leaf * n_samples) 是每個節點的最小樣本數。
min_weight_fraction_leaf浮點數,默認=0.0

需要在葉節點處的權重總和(所有輸入樣本的)的最小加權分數。當未提供sample_weight 時,樣本具有相同的權重。

max_featuresint、float、{“auto”, “sqrt”、“log2”} 或 None,默認=”auto”

尋找最佳分割時要考慮的特征數量:

  • 如果是 int,則在每次拆分時考慮 max_features 特征。
  • 如果是浮點數,那麽 max_features 是一個分數,並且在每次拆分時都會考慮 int(max_features * n_features) 特征。
  • 如果 “auto”,那麽 max_features=n_features
  • 如果 “sqrt”,那麽 max_features=sqrt(n_features)
  • 如果 “log2”,那麽 max_features=log2(n_features)
  • 如果沒有,那麽 max_features=n_features

注意:在找到至少一個節點樣本的有效分區之前,對拆分的搜索不會停止,即使它需要有效地檢查超過 max_features 的特征。

random_stateint、RandomState 實例或無,默認=無

用於隨機選擇每次拆分時使用的max_features。有關詳細信息,請參閱詞匯表。

min_impurity_decrease浮點數,默認=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是右孩子的樣本數.

N , N_t , N_t_RN_t_L 都是指加權和,如果通過了 sample_weight

max_leaf_nodes整數,默認=無

以best-first 方式用max_leaf_nodes 種植一棵樹。最佳節點定義為雜質的相對減少。如果 None 則無限數量的葉節點。

ccp_alpha非負浮點數,默認=0.0

用於最小Cost-Complexity 修剪的複雜度參數。將選擇具有最大成本複雜度且小於ccp_alpha 的子樹。默認情況下,不進行剪枝。有關詳細信息,請參閱最小 Cost-Complexity 修剪。

屬性

max_features_int

max_features 的推斷值。

n_features_int

已棄用:屬性 n_features_ 在 1.0 中已棄用,並將在 1.2 中刪除。

n_features_in_int

擬合期間看到的特征數。

feature_names_in_ndarray 形狀(n_features_in_,)

擬合期間看到的特征名稱。僅當 X 具有全為字符串的函數名稱時才定義。

feature_importances_ndarray 形狀 (n_features,)

返回特征重要性。

n_outputs_int

執行fit 時的輸出數。

tree_樹實例

基礎樹對象。請參考 help(sklearn.tree._tree.Tree) 了解 Tree 對象的屬性和了解決策樹結構了解這些屬性的基本用法。

注意

控製樹大小的參數的默認值(例如 max_depthmin_samples_leaf 等)會導致完全生長和未修剪的樹在某些數據集上可能非常大。為了減少內存消耗,應該通過設置這些參數值來控製樹的複雜性和大小。

參考

1

P. Geurts、D. Ernst. 和 L. Wehenkel,“Extremely randomized trees”,機器學習,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...

相關用法


注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.tree.ExtraTreeRegressor。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。