本文簡要介紹python語言中 sklearn.ensemble.RandomForestRegressor
的用法。
用法:
class sklearn.ensemble.RandomForestRegressor(n_estimators=100, *, criterion='squared_error', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features='auto', max_leaf_nodes=None, min_impurity_decrease=0.0, bootstrap=True, oob_score=False, n_jobs=None, random_state=None, verbose=0, warm_start=False, ccp_alpha=0.0, max_samples=None)
一個隨機森林回歸器。
隨機森林是一種元估計器,它在數據集的各種 sub-samples 上擬合多個分類決策樹,並使用平均來提高預測準確性並控製過度擬合。如果
bootstrap=True
(默認),則子樣本大小由max_samples
參數控製,否則使用整個數據集來構建每棵樹。在用戶指南中閱讀更多信息。
- n_estimators:整數,默認=100
森林中的樹數量。
- criterion:{“squared_error”, “absolute_error”, “poisson”},默認=”squared_error”
測量分割質量的函數。支持的標準是用於均方誤差的“squared_error”,它等於作為特征選擇標準的方差減少,用於平均絕對誤差的“absolute_error”,以及使用泊鬆偏差減少來尋找分裂的“poisson”。使用 “absolute_error” 進行訓練比使用 “squared_error” 時要慢得多。
- 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:{“auto”, “sqrt”, “log2”}, int 或浮點數,默認=”auto”
尋找最佳分割時要考慮的特征數量:
- 如果是 int,則在每次拆分時考慮
max_features
特征。 - 如果是浮點數,那麽
max_features
是一個分數,並且在每次拆分時都會考慮round(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,則在每次拆分時考慮
- 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
。- bootstrap:布爾,默認=真
構建樹時是否使用引導樣本。如果為 False,則使用整個數據集來構建每棵樹。
- oob_score:布爾,默認=假
是否使用out-of-bag 個樣本來估計泛化分數。僅當 bootstrap=True 時可用。
- n_jobs:整數,默認=無
並行運行的作業數量。
fit
、predict
、decision_path
和apply
都在樹上並行化。None
表示 1,除非在joblib.parallel_backend
上下文中。-1
表示使用所有處理器。有關更多詳細信息,請參閱術語表。- random_state:int、RandomState 實例或無,默認=無
控製構建樹時使用的樣本引導的隨機性(如果
bootstrap=True
)和在每個節點尋找最佳分割時要考慮的特征采樣(如果max_features < n_features
)。有關詳細信息,請參閱詞匯表。- verbose:整數,默認=0
控製擬合和預測時的詳細程度。
- warm_start:布爾,默認=假
當設置為
True
時,重用上一次調用的解決方案以適應並向集成添加更多估計器,否則,隻需適應一個全新的森林。請參閱詞匯表。- ccp_alpha:非負浮點數,默認=0.0
用於最小Cost-Complexity 修剪的複雜度參數。將選擇具有最大成本複雜度且小於
ccp_alpha
的子樹。默認情況下,不進行剪枝。有關詳細信息,請參閱最小 Cost-Complexity 修剪。- max_samples:int 或浮點數,默認=無
如果 bootstrap 為 True,則從 X 抽取的樣本數以訓練每個基本估計器。
- 如果無(默認),則繪製
X.shape[0]
樣本。 - 如果是 int,則繪製
max_samples
樣本。 - 如果浮點數,則繪製
max_samples * X.shape[0]
樣本。因此,max_samples
應該在區間(0.0, 1.0]
中。
- 如果無(默認),則繪製
- base_estimator_:DecisionTreeRegressor
用於創建擬合sub-estimators 集合的子估計器模板。
- estimators_:DecisionTreeRegressor列表
擬合sub-estimators 的集合。
feature_importances_
ndarray 形狀 (n_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
時的輸出數。- oob_score_:浮點數
使用out-of-bag 估計獲得的訓練數據集的分數。此屬性僅在
oob_score
為 True 時存在。- oob_prediction_:ndarray 形狀 (n_samples,) 或 (n_samples, n_outputs)
使用 out-of-bag 估計在訓練集上計算的預測。此屬性僅在
oob_score
為 True 時存在。
參數:
屬性:
注意:
控製樹大小的參數的默認值(例如
max_depth
、min_samples_leaf
等)會導致完全生長和未修剪的樹在某些數據集上可能非常大。為了減少內存消耗,應該通過設置這些參數值來控製樹的複雜性和大小。每次拆分時,特征總是隨機排列。因此,即使使用相同的訓練數據
max_features=n_features
和bootstrap=False
,如果在搜索最佳拆分期間枚舉的幾個拆分的標準改進相同,則找到的最佳拆分可能會有所不同。要在擬合期間獲得確定性行為,必須修複random_state
。默認值
max_features="auto"
使用n_features
而不是n_features / 3
。後者最初是在 [1] 中提出的,而前者最近在 [2] 中被經驗證明是合理的。參考:
- 1
Breiman,“Random Forests”,機器學習,45(1),5-32,2001。
- 2
P. Geurts、D. Ernst. 和 L. Wehenkel,“Extremely randomized trees”,機器學習,63(1),3-42,2006。
例子:
>>> from sklearn.ensemble import RandomForestRegressor >>> from sklearn.datasets import make_regression >>> X, y = make_regression(n_features=4, n_informative=2, ... random_state=0, shuffle=False) >>> regr = RandomForestRegressor(max_depth=2, random_state=0) >>> regr.fit(X, y) RandomForestRegressor(...) >>> print(regr.predict([[0, 0, 0, 0]])) [-8.32987858]
相關用法
- Python sklearn RandomForestClassifier用法及代碼示例
- Python sklearn RandomTreesEmbedding用法及代碼示例
- Python sklearn RandomizedSearchCV用法及代碼示例
- Python sklearn RadiusNeighborsTransformer用法及代碼示例
- Python sklearn RadiusNeighborsRegressor.radius_neighbors_graph用法及代碼示例
- Python sklearn RadiusNeighborsClassifier用法及代碼示例
- Python sklearn RadiusNeighborsTransformer.radius_neighbors_graph用法及代碼示例
- Python sklearn RadiusNeighborsRegressor用法及代碼示例
- Python sklearn RadiusNeighborsTransformer.radius_neighbors用法及代碼示例
- Python sklearn RadiusNeighborsRegressor.radius_neighbors用法及代碼示例
- Python sklearn RadiusNeighborsClassifier.radius_neighbors_graph用法及代碼示例
- Python sklearn RadiusNeighborsClassifier.radius_neighbors用法及代碼示例
- Python sklearn RationalQuadratic用法及代碼示例
- Python sklearn RocCurveDisplay用法及代碼示例
- Python sklearn RFE用法及代碼示例
- Python sklearn RidgeCV用法及代碼示例
- Python sklearn RegressorChain用法及代碼示例
- Python sklearn RANSACRegressor用法及代碼示例
- Python sklearn RobustScaler用法及代碼示例
- Python sklearn RepeatedStratifiedKFold用法及代碼示例
- Python sklearn RocCurveDisplay.from_estimator用法及代碼示例
- Python sklearn RBF用法及代碼示例
- Python sklearn Ridge用法及代碼示例
- Python sklearn RocCurveDisplay.from_predictions用法及代碼示例
- Python sklearn RidgeClassifierCV用法及代碼示例
注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.ensemble.RandomForestRegressor。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。