sklearn.tree.DecisionTreeRegressor?

class sklearn.tree.DecisionTreeRegressor(*, criterion='mse', 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, min_impurity_split=None, presort='deprecated', ccp_alpha=0.0)

[源碼]

決策樹回歸器。

用戶指南中閱讀更多內容。

參數 說明
criterion {“mse”, “friedman_mse”, “mae”}, default=”mse”
測量分割質量的函數。支持的標準是均方誤差的“ mse”,等于方差減少作為特征選擇標準,并使用每個終端節點的均值“ friedman_mse”來最小化L2損失,該方法使用均方誤差和弗里德曼改進分數作為潛在值拆分,并使用“ mae”表示平均絕對誤差,使用每個終端節點的中值將L1損失最小化。
版本0.18中的新功能:平均絕對誤差(MAE)標準。
splitter {“best”, “random”}, default=”best”
用于在每個節點上選擇拆分的策略。支持的策略是“best”選擇最佳拆分,“random”選擇最佳隨機拆分。
max_depth int, default=None
樹的最大深度。如果為None,則將節點展開,直到所有葉子都是純凈的,或者直到所有葉子都包含少于min_samples_split個樣本。
min_samples_split int or float, default=2
拆分內部節點所需的最少樣本數:
- 如果為int,則認為min_samples_split是最小值。
- 如果為float,min_samples_split則為分數, ceil(min_samples_split * n_samples)是每個拆分的最小樣本數。
在版本0.18中更改:添加了分數的浮點值。
min_samples_leaf int or float, default=1
在葉節點處需要的最小樣本數。任何深度的分割點只有在左、右分支中至少留下min_samples_leaf訓練樣本時才會被考慮。這可能具有平滑模型的效果,尤其是在回歸中。
min_weight_fraction_leaf float, default=0.0
在所有葉節點處(所有輸入樣本)的權重總和中的最小加權分數。如果未提供sample_weight,則樣本的權重相等。
max_features int, float or {“auto”, “sqrt”, “log2”}, default=None
尋找最佳分割時要考慮的特征數量:
- 如果為int,則max_features在每個分割處考慮特征。
- 如果為float,max_features則為小數,并且int(max_features * n_features)是在每次拆分時考慮要素。
- 如果為“auto”,則為max_features=n_features
- 如果是“ sqrt”,則max_features=sqrt(n_features)
- 如果為“ log2”,則為max_features=log2(n_features)
- 如果為”None“,則max_features=n_features
注:直到找到至少一個有效的節點樣本分區,分割的搜索才會停止,即使它需要有效檢查多個max_features要素也是如此。
random_state int, RandomState instance, default=None
控制估算器的隨機性。即使splitter設置為"best",這些特性總是在每次拆分時隨機排列。當max_features < n_features時,算法將在每個分割處隨機選擇max_features特征,然后在其中找到最佳分割。即使max_features=n_features,但最佳分割可能因不同的運行而有所不同,這種情況下,如果標準的改進對于多個分割是相同的,必須隨機選擇一個分割。為了在擬合過程中獲得確定性行為,必須將其固定為整數。有關詳細信息,請參見詞匯表
max_leaf_nodes int, default=None
以最好的方式種植一棵樹,樹上有max_l節點。最佳節點定義為雜質相對減少。如果沒有,則葉節點的數量不受限制。
min_impurity_decrease float, 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是右子節點中的樣本數。
NN_tN_t_RN_t_L都指的是加權和,如果sample_weight可以通過。
版本0.19中的新功能。
min_impurity_split float, (default=0)
盡早停止樹的生長的閾值。如果節點的雜質高于閾值,則該節點將分裂,否則為葉。
從版本0.19min_impurity_split開始不推薦使用:在版本0.19中不再推薦使用 min_impurity_decreasemin_impurity_split的默認值在0.23中從1e-7更改為0,將會在0.25中刪除。使用min_impurity_decrease將其代替。
presort deprecated, default=’deprecated’
此參數已棄用,并將在v0.24中刪除。
從0.22版開始不推薦使用。
ccp_alpha non-negative float, default=0.0
用于最小代價復雜度修剪的復雜度參數。選擇代價復雜度最大且小于ccp_alpha的子樹。默認情況下,不執行修剪。有關詳細信息,請參見 最小成本復雜性修剪
0.22版中的新功能。
屬性 說明
feature_importances_ ndarray of shape (n_features,)
返特征的重要性。
max_features_ int
max_features的推斷值。
n_features_ int
fit執行時的特征數量。
n_outputs_ int
fit執行時的輸出數量。
tree_ Tree
基礎的Tree對象。有關樹對象的屬性請參閱help(sklearn.tree._tree.Tree), 有關這些屬性的基本用法,請參閱 決策樹結構

另見

DecisionTreeClassifier

決策樹分類器。

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

參考文獻

1 https://en.wikipedia.org/wiki/Decision_tree_learning

2 L. Breiman, J. Friedman, R. Olshen, and C. Stone, “Classification and Regression Trees”, Wadsworth, Belmont, CA, 1984.

3 T. Hastie, R. Tibshirani and J. Friedman. “Elements of Statistical Learning”, Springer, 2009.

4 L. Breiman, and 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)
...                    # doctest: +SKIP
...
array([-0.39..., -0.46...,  0.02...,  0.06..., -0.50...,
       0.16...,  0.11..., -0.73..., -0.30..., -0.00...])
方法 說明
apply(X[, check_input]) 返回每個樣本被預測為的葉子的索引。
cost_complexity_pruning_path(X, y[, …]) 在最小化成本復雜性修剪期間計算修剪路徑。
decision_path(X[, check_input]) 返回樹中的決策路徑。
fit(X, y[, sample_weight, check_input, …]) 根據訓練集(X,y)構建決策樹回歸器。
get_depth() 返回決策樹的深度。
get_n_leaves() 返回決策樹的葉子數。
get_params([deep]) 獲取此估計量的參數。
predict(X[, check_input]) 預測X的類或回歸值。
score(X, y[, sample_weight]) 返回預測的確定系數R ^ 2。
set_params(**params) 設置此估算器的參數。
__init__(*, criterion='mse', 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, min_impurity_split=None, presort='deprecated', ccp_alpha=0.0)

源碼

初始化self。請參閱help(type(self))獲取準確的簽名。

apply(X, check_input=True)

[源碼]

返回每個樣本被預測為的葉子的索引。

0.17版中的新功能。

參數 說明
X {array-like, sparse matrix} of shape (n_samples, n_features)
輸入樣本。在內部,如果將稀疏矩陣提供給sparse csr_matrix,它將轉換為 dtype=np.float32
check_input bool, default=True
允許繞過多個輸入檢查。除非您知道自己要做什么,否則不要使用此參數。
返回值 說明
X_leaves array-like of shape (n_samples,)
對于X中的每個數據點x,返回以x結尾的葉子的索引。葉子在內編號[0; self.tree_.node_count),可能在編號中帶有空格。
cost_complexity_pruning_path(X, y, sample_weight=None)

[源碼]

在最小化成本復雜性修剪期間計算修剪路徑。

有關修剪過程的詳細信息,請參見最小成本復雜性修剪

參數 說明
X {array-like, sparse matrix} of shape (n_samples, n_features)
訓練輸入樣本。在內部,如果將稀疏矩陣提供給sparse csr_matrix,它將轉換為 dtype=np.float32
y array-like of shape (n_samples,) or (n_samples, n_outputs)
目標值(類標簽)為整數或字符串。
sample_weight array-like of shape (n_samples,), default=None
樣品重量。如果為None,則對樣本進行平均加權。在每個節點中搜索拆分時,將忽略創建凈值為零或負權重的子節點的拆分。如果拆分會導致任何單個類在任一子節點中都負負重,則也將忽略拆分。
返回值 說明
ccp_path Bunch
類字典對象,具有以下屬性。
ccp_alphas:ndarray
修剪期間子樹的有效Alpha。
impurities:ndarray
子樹中的雜質總和為ccp_alphas中對應的alpha值。
decision_path(X, check_input=True)

[源碼]

返回樹中的決策路徑。

版本0.18中的新功能。

參數 說明
X {array-like, sparse matrix} of shape (n_samples, n_features)
輸入樣本。在內部,如果將稀疏矩陣提供給sparse csr_matrix,它將轉換為 dtype=np.float32
check_input bool, default=True
允許繞過多個輸入檢查。除非您知道自己要做什么,否則不要使用此參數。
返回值 說明
indicator sparse matrix of shape (n_samples, n_nodes)
返回節點指示符CSR矩陣,其中非零元素表示樣本通過節點。
property feature_importances_

返回功能的重要性。

特征的重要性計算為該特征帶來的標準的(標準化)總縮減。這也被稱為基尼重要性。

警告:基于雜質的特征重要性可能會誤導高基數特征(許多唯一值)。詳情另見 sklearn.inspection.permutation_importance

返回值 說明
feature_importances_ ndarray of shape (n_features,)
按功能對標準的總歸約化進行歸一化(基尼重要性)。
fit(X, y, sample_weight=None, check_input=True, X_idx_sorted=None)

[源碼]

根據訓練集(X,y)構建決策樹回歸器。

參數 說明
X {array-like, sparse matrix} of shape (n_samples, n_features)
訓練輸入樣本。在內部,如果將稀疏矩陣提供給sparse csr_matrix,它將轉換為 dtype=np.float32
y array-like of shape (n_samples,) or (n_samples, n_outputs)
目標值(實數)。使用dtype=np.float64order='C'獲得最高效率。
sample_weight array-like of shape (n_samples,), default=None
樣品重量。如果為None,則對樣本進行平均加權。在每個節點中搜索拆分時,將忽略創建凈值為零或負權重的子節點的拆分。
check_input bool, default=True
允許繞過多個輸入檢查。除非您知道自己要做什么,否則不要使用此參數。
X_idx_sorted array-like of shape (n_samples, n_features), default=None
排序后的訓練輸入樣本的索引。如果在同一數據集上生長了許多樹,則可以在樹之間緩存順序。如果為None,則將在此處對數據進行排序。除非您知道要做什么,否則不要使用此參數。
返回值 說明
self DecisionTreeRegressor
擬合估計量。
get_depth()

[源碼]

返回決策樹的深度。

一棵樹的深度是根與任何葉子之間的最大距離。

返回值 說明
self.tree_.max_depth int
樹的最大深度。
get_n_leaves()

[源碼]

返回決策樹的葉子數。

返回值 說明
self.tree_.n_leaves int
葉子數。
get_params(deep=True)

[源碼]

獲取此估計量的參數。

參數 說明
deep bool, default=True
如果為True,則將返回此估算量和作為估算量的所包含子對象的參數。
返回值 說明
params mapping of string to any
參數名稱映射到其值。
predict(X, check_input=True)

[源碼]

預測X的類或回歸值。

對于分類模型,返回X中每個樣本的預測類。對于回歸模型,將返回基于X的預測值。

參數 說明
X {array-like, sparse matrix} of shape (n_samples, n_features)
輸入樣本。在內部,如果將稀疏矩陣提供給sparse csr_matrix,它將轉換為 dtype=np.float32
check_input bool, default=True
允許繞過多個輸入檢查。除非您知道自己要做什么,否則不要使用此參數。
返回值 說明
y array-like of shape (n_samples,) or (n_samples, n_outputs)
預測的類或預測值。
score(X, y, sample_weight=None)

[源碼]

返回預測的確定系數R ^ 2。

系數R ^ 2定義為 (1 - u/v),其中u是平方的殘差和((y_true - y_pred) ** 2).sum(),而v是平方的總和((y_true - y_true.mean()) ** 2).sum()。可能的最高分數是1.0,并且可能為負(因為該模型可能會更差)。不管輸入特征如何,始終預測y的期望值的常數模型將獲得0.0的R ^ 2分數。

參數 說明
X array-like of shape (n_samples, n_features)
測試樣品。對于某些估計量,這可以是預先計算的核矩陣或一般對象列表,而不是shape = (n_samples, n_samples_fitted),其中n_samples_fitted是用于估計量擬合的樣本數。
y array-like of shape (n_samples,) or (n_samples, n_outputs)
X的真實值。
sample_weight array-like of shape (n_samples,), default=None
樣品權重。
返回值 說明
score float
self.predict(X) wrt. y的R^2

調用score回歸器時使用的R2得分multioutput='uniform_average'從0.23版開始使用 ,r2_score已與默認值保持一致。這會影響score所有多輸出回歸變量的方法(除外 MultiOutputRegressor)。

set_params(**params)

[源碼]

設置此估算量的參數。

該方法適用于簡單的估計器以及嵌套對象(例如pipelines)。后者具有形式為 <component>__<parameter> 的參數,因此可以更新嵌套對象的每個組件。

參數 說明
**params dict
估算量參數。
返回值 說明
self object
估算量實例。