本文简要介绍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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。