本文簡要介紹python語言中 sklearn.tree.DecisionTreeRegressor
的用法。
用法:
class sklearn.tree.DecisionTreeRegressor(*, criterion='squared_error', splitter='best', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=None, max_leaf_nodes=None, min_impurity_decrease=0.0, ccp_alpha=0.0)
決策樹回歸器。
在用戶指南中閱讀更多信息。
- criterion:{“squared_error”、“friedman_mse”、“absolute_error”、“poisson”},默認=”squared_error”
測量分割質量的函數。支持的標準是均方誤差的“squared_error”,它等於作為特征選擇標準的方差減少,並使用每個終端節點的平均值來最小化 L2 損失,“friedman_mse”,它使用均方誤差和弗裏德曼的潛在改進分數分裂,“absolute_error” 表示平均絕對誤差,它使用每個終端節點的中值最小化 L1 損失,“poisson” 使用泊鬆偏差的減少來找到分裂。
- splitter:{“best”, “random”},默認=”best”
用於在每個節點處選擇拆分的策略。支持的策略是“best” 選擇最佳分割和“random” 選擇最佳隨機分割。
- max_depth:整數,默認=無
樹的最大深度。如果沒有,則擴展節點直到所有葉子都是純的或直到所有葉子包含少於min_samples_split 個樣本。
- min_samples_split:int 或浮點數,默認=2
拆分內部節點所需的最小樣本數:
- 如果是 int,則將
min_samples_split
視為最小數字。 - 如果是浮點數,那麽
min_samples_split
是一個分數,而ceil(min_samples_split * n_samples)
是每個拆分的最小樣本數。
- 如果是 int,則將
- min_samples_leaf:int 或浮點數,默認=1
葉節點所需的最小樣本數。隻有在左右分支中的每個分支中至少留下
min_samples_leaf
訓練樣本時,才會考慮任何深度的分割點。這可能具有平滑模型的效果,尤其是在回歸中。- 如果是 int,則將
min_samples_leaf
視為最小數字。 - 如果是浮點數,那麽
min_samples_leaf
是分數,而ceil(min_samples_leaf * n_samples)
是每個節點的最小樣本數。
- 如果是 int,則將
- min_weight_fraction_leaf:浮點數,默認=0.0
需要在葉節點處的權重總和(所有輸入樣本的)的最小加權分數。當未提供sample_weight 時,樣本具有相同的權重。
- max_features:int、float 或 {“auto”, “sqrt”, “log2”},默認 = 無
尋找最佳分割時要考慮的特征數量:
- 如果是 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
的特征。- 如果是 int,則在每次拆分時考慮
- random_state:int、RandomState 實例或無,默認=無
控製估計器的隨機性。即使
splitter
設置為"best"
,這些特征總是在每次拆分時隨機排列。當max_features < n_features
時,算法將在每次拆分時隨機選擇max_features
,然後再找到其中的最佳拆分。但是,即使max_features=n_features
,最好的拆分可能會因不同的運行而有所不同。就是這樣,如果標準的改進對於幾個拆分是相同的,並且必須隨機選擇一個拆分。為了在擬合期間獲得確定性行為,random_state
必須固定為整數。有關詳細信息,請參閱詞匯表。- max_leaf_nodes:整數,默認=無
以best-first 方式用
max_leaf_nodes
種植一棵樹。最佳節點定義為雜質的相對減少。如果 None 則無限數量的葉節點。- 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_R
和N_t_L
都是指加權和,如果通過了sample_weight
。- ccp_alpha:非負浮點數,默認=0.0
用於最小Cost-Complexity 修剪的複雜度參數。將選擇具有最大成本複雜度且小於
ccp_alpha
的子樹。默認情況下,不進行剪枝。有關詳細信息,請參閱最小 Cost-Complexity 修剪。
feature_importances_
ndarray 形狀 (n_features,)返回特征重要性。
- 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
具有全為字符串的函數名稱時才定義。- n_outputs_:int
執行
fit
時的輸出數。- tree_:樹實例
基礎樹對象。請參考
help(sklearn.tree._tree.Tree)
了解 Tree 對象的屬性和了解決策樹結構了解這些屬性的基本用法。
參數:
屬性:
注意:
控製樹大小的參數的默認值(例如
max_depth
、min_samples_leaf
等)會導致完全生長和未修剪的樹在某些數據集上可能非常大。為了減少內存消耗,應該通過設置這些參數值來控製樹的複雜性和大小。參考:
- 1
- 2
L. Breiman、J. Friedman、R. Olshen 和 C. Stone,“分類和回歸樹”,Wadsworth,Belmont,CA,1984 年。
- 3
T. Hastie、R. Tibshirani 和 J. Friedman。 “統計學習要素”,施普林格,2009 年。
- 4
L. Breiman 和 A. Cutler,“Random Forests”,https://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm
例子:
>>> from sklearn.datasets import load_diabetes >>> from sklearn.model_selection import cross_val_score >>> from sklearn.tree import DecisionTreeRegressor >>> X, y = load_diabetes(return_X_y=True) >>> regressor = DecisionTreeRegressor(random_state=0) >>> cross_val_score(regressor, X, y, cv=10) ... ... array([-0.39..., -0.46..., 0.02..., 0.06..., -0.50..., 0.16..., 0.11..., -0.73..., -0.30..., -0.00...])
相關用法
- Python sklearn DecisionTreeClassifier用法及代碼示例
- Python sklearn DetCurveDisplay.from_predictions用法及代碼示例
- Python sklearn DetCurveDisplay.from_estimator用法及代碼示例
- Python sklearn DetCurveDisplay用法及代碼示例
- Python sklearn DummyRegressor用法及代碼示例
- Python sklearn DictVectorizer用法及代碼示例
- Python sklearn DictVectorizer.restrict用法及代碼示例
- Python sklearn DummyClassifier用法及代碼示例
- Python sklearn DotProduct用法及代碼示例
- Python sklearn DistanceMetric用法及代碼示例
- Python sklearn DictionaryLearning用法及代碼示例
- Python sklearn DBSCAN用法及代碼示例
- Python sklearn jaccard_score用法及代碼示例
- Python sklearn WhiteKernel用法及代碼示例
- Python sklearn CalibrationDisplay.from_predictions用法及代碼示例
- Python sklearn VotingRegressor用法及代碼示例
- Python sklearn gen_batches用法及代碼示例
- Python sklearn ExpSineSquared用法及代碼示例
- Python sklearn MDS用法及代碼示例
- Python sklearn adjusted_rand_score用法及代碼示例
- Python sklearn MLPClassifier用法及代碼示例
- Python sklearn train_test_split用法及代碼示例
- Python sklearn RandomTreesEmbedding用法及代碼示例
- Python sklearn GradientBoostingRegressor用法及代碼示例
- Python sklearn GridSearchCV用法及代碼示例
注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.tree.DecisionTreeRegressor。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。