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 是右子節點中的樣本數。N ,N_t ,N_t_R 和N_t_L 都指的是加權和,如果sample_weight 可以通過。版本0.19中的新功能。 |
min_impurity_split | float, (default=0) 盡早停止樹的生長的閾值。如果節點的雜質高于閾值,則該節點將分裂,否則為葉。 從版本0.19 min_impurity_split 開始不推薦使用:在版本0.19中不再推薦使用 min_impurity_decrease 。 min_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_ | intfit 執行時的特征數量。 |
n_outputs_ | intfit 執行時的輸出數量。 |
tree_ | Tree 基礎的Tree對象。有關樹對象的屬性請參閱 help(sklearn.tree._tree.Tree) , 有關這些屬性的基本用法,請參閱 決策樹結構。 |
另見
決策樹分類器。
注
控制樹(例如max_depth
,min_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.float64 和 order='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 估算量實例。 |