04-12 scikit-learn库之随机森林

scikit-learn库之随机森林

在这里插入图片描述

  本文主要介绍随机森林的两个模型RandomForestClassifierRandomForestRegressor,这两个模型调参包括两部分,第一部分是Bagging框架,第二部分是CART决策树的参数。本文会详解介绍RandomForestClassifier模型,然后会对比着讲解RandomForestRegressor模型。

  接下来将会讨论上述两者的区别,由于是从官方文档翻译而来,翻译会略有偏颇,有兴趣的也可以去scikit-learn官方文档查看https://scikit-learn.org/stable/modules/classes.html#module-sklearn.ensemble

RandomForestClassifier

使用场景

  RandomForestClassfier模型主要解决分类问题,其他也没啥好说的。

代码

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification

X, y = make_classification(n_samples=1000, n_features=4,
                           n_informative=2, n_redundant=0, random_state=0, shuffle=False)
clf = RandomForestClassifier(n_estimators=100, max_depth=2, random_state=0)
clf.fit(X, y)
RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
            max_depth=2, max_features='auto', max_leaf_nodes=None,
            min_impurity_decrease=0.0, min_impurity_split=None,
            min_samples_leaf=1, min_samples_split=2,
            min_weight_fraction_leaf=0.0, n_estimators=100, n_jobs=None,
            oob_score=False, random_state=0, verbose=0, warm_start=False)
print(clf.feature_importances_)
[0.14205973 0.76664038 0.0282433  0.06305659]
print(clf.predict([[0, 0, 0, 0]]))
[1]

参数

  • n_estimators::弱学习器个数,int类型。弱学习的个数,也可以说是弱学习器的最大迭代次数。默认为10。
  • **criterion:**特征选择,str类型。criterion=‘gini’表示基尼指数;criterion=‘entropy’表示信息增益,推荐使用’gini’。默认为’gini’。
  • **splitter:**特征划分点选择,str类型。splitter='best’在特征的所有划分点中找出最优的划分点,适合小样本量;splitter=‘random’随机的在部分划分点中找到局部最优的划分点,适合大样本量。默认为’best’。
  • **max_depth:**最大深度,int类型。如果样本特征数较少可以使用默认值,如果样本特征数较多一般用max_depty=10-100限制树的最大深度。默认为None。
  • **min_samples_split:**内部节点划分需要最少样本数,float类型。限定子树继续划分的条件,如果某节点的样本数少于min_samples_split,则会停止继续划分子树。如果样本数量过大,建议增大该值,否则建议使用默认值。默认为2。
  • **min_samples_leaf:**叶子节点最少样本数float类型。如果在某次划分叶子节点数目小于样本数,则会和兄弟节点一起剪枝。如果样本数量过大,建议增大该值,否则建议使用默认值。默认为1。
  • **min_weight_fraction_leaf:**叶子节点最小的样本权重和,float类型。该参数限制了叶子节点所有样本权重和的最小值,如果小于该值,则会和兄弟节点一起剪枝。如果样本有角度的缺失值,或者样本的分布偏差较大,则可以考虑权重问题。默认为0。
  • **max_features:**划分的最大特征数,str、int、float类型。max_depth='log2’表示最多考虑 l o g 2 n log_2n log2n个特征;max_depth={‘sqrt’,‘auto’}表示最多考虑 n \sqrt{n} n 个特征;max_depth=int类型,考虑 ∣ i n t 类 型 ∣ |int类型| int个特征;max_depth=float类型,如0.3,则考虑 0.3 n 0.3n 0.3n个特征,其中 n n n为样本总特征数。默认为None,样本特征数不大于50推荐使用默认值。
  • **max_leaf_nodes:**最大叶子节点数,int类型。限制最大叶子节点数,可以防止树过深,因此可以防止过拟合。默认为None。
  • **min_impurity_decrease:**节点减小不纯度,float类型。如果某节点划分会导致不纯度的减少大于min_impurity_decrease,则停止该节点划分。默认为0。
  • **min_impurity_split:**节点划分最小不纯度,float类型。如果某节点的不纯度小于min_impurity_split,则停止该节点划分,即不生成叶子节点。默认为1e-7(0.0000001)。
  • **class_weight:**类别权重,dict类型或str类型。对于二元分类问题可以使用class_weight={0:0.9,1:0.1},表示0类别权重为0.9,1类别权重为0.1,str类型即为’balanced’,模型将根据训练集自动修改不同类别的权重。默认为None。
  • **bootstrp:**bool类型。默认为True。构建决策树时是否引导样本。
  • **oob_score:**袋外模型,bool类型。是否采用袋外样本来评估模型的好坏,个人推荐设置为True,因为袋外分数反应了一个模型拟合后的泛化能力。默认为False。
  • **n_jobs:**并行数,int类型。n_jobs=1使用1个cpu运行程序;n_jobs=2,使用2个cpu运行程序;n_jobs=-1,使用所有cpu运行程序。默认为1。
  • **random_state:**随机数种子,int类型。random_state=None,不同时刻产生的随机数据是不同的;random_state=int类型,相同随机数种子不同时刻产生的随机数是相同的。默认为None。
  • **verbose:**日志冗长度,int类型。verbose=0,不输出训练过程;verbose=1,输出部分训练过程;verbose>1,输出所有的训练过程。默认为0。
  • **warm_start:**热启动,bool类型。如果为True,则基于上一个随机森林添加决策树;如果为False,则重新生成一个随机森林。默认为False。
  • **class_weight:**样本类别权重,{dict类型,‘balanced’}。给每个类别指定不同的权重,'balanced’将自动分配不同类别样本的权重。默认为None。

属性

  • **estimators_:**list类型。所有决策树集合。
  • **classes_:**array类型。所有类别列表。
  • **n_classes_:**int类型。类别个数。
  • **n_features_:**int类型。特征个数。
  • **n_outputs_:**int类型。输出个数。
  • **feature_importances_:**array类型。特征重要度。
  • **oob_score_:**float类型。用袋外模型训练数据的分数。
  • **oob_decision_function_:**array类型。袋外模型训练数据的决策函数。

方法

  • **apply(X[, check_input]):**返回每个样本预测的叶子节点索引。
  • **decision_path(X[, check_input]):**返回样本X在树中的决策路径。
  • **fit(X,y):**把数据放入模型中训练模型。
  • **get_params([deep]):**返回模型的参数,可以用于Pipeline中。
  • **predict(X):**预测样本X的分类类别。
  • **predict_log_proba(X):**返回样本X在各个类别上对应的对数概率。
  • **predict_proba(X):**返回样本X在各个类别上对应的概率。
  • **score(X,y):**基于报告决定系数 R 2 R^2 R2评估模型。
  • **set_prams(**params):**创建模型参数。

RandomForestRegressor

  RandomForestRegressor模型相比较RandomForestClassifier模型解决回归问题。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值