首先理解随机森林模型各参数的含义:

class sklearn.ensemble.RandomForestRegressor(n_estimators=10, criterion=’mse’, 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, min_impurity_split=None, bootstrap=True, oob_score=False, 
n_jobs=1, random_state=None, verbose=0, warm_start=False)

上面的值是对应的默认值,随机森林的分类模型与之类似.

n_estimators:森林中数的个数。 
这个属性是典型的模型表现与模型效率成反比的影响因子,即便如此,你还是应该尽可能提高这个数字,以让你的模型更准确更稳定。 
criterion :度量分裂的标准。可选值:“mse”,均方差(mean squared error);“mae”,平均绝对值误差(mean absolute error) 
max_features :寻找最佳分裂点时考虑的属性数目。可选值,int(具体的数目),float(数目的百分比),string(“auto”, “sqrt”,“log2”). 
这一属性是对单个树来设置的,通常来讲,这个值越大单棵树可以考虑的属性越多,则模型的表现就越好。但是这也不是肯定的,不过有一点是肯定的,增加这个值会导致算法运行速度变慢,所以需要我们考虑去达到一个平衡。 
max_depth : integer或者None。数的最大深度,如果None,节点扩展直到所有叶子是纯的或者所有叶子节点包含的样例数小于min_samples_split 
min_samples_split : 分裂内部节点需要的最少样例数。int(具体数目),float(数目的百分比) 
min_samples_leaf :叶子节点上应有的最少样例数。int(具体数目),float(数目的百分比)。 
更少的节点数使得模型更容易遭受noise data的影响,我通常设置这个值大于50,但是你需要寻找最适合你的数值。 
min_weight_fraction_leaf : 
max_leaf_nodes :以”最优优先方式”(best-first fashion),最优节点定义为:纯度的相对减少.如果None则不限制叶子节点个数;[float] 
min_impurity_split : 树增长提前结束的阈值.对于当前节点,大于这个阈值将分裂,否则就看做叶子节点; [float] 
min_impurity_decrease :一个阈值,表示一个节点分裂的条件是:如果这次分裂纯度的减少大于等于这这个值. 
bootstrap :构建数是不是采用有放回样本的方式(bootstrap samples); [True/False] 
oob_score :交叉验证相关的属性。 
n_jobs :设定fit和predict阶段并列执行的任务个数,如果设置为-1表示并行执行的任务数等于计算级核数; [integer, optional (default=1)] 
random_state :如果是int数值表示它就是随机数产生器的种子.如果指定RandomState实例,它就是随机产生器的种子.如果是None,随机数产生器是np.random所用的RandomState实例; [int, RandomState instance or None, optional (default=None)] 
verbose :控制构建数过程的冗长度; [int, optional (default=0)] 
warm_start :当设置为True,重新使用之前的结构去拟合样例并且加入更多的估计器(estimators,在这里就是随机树)到组合器中; [True/False] 
class_weight: “banlanced”模式是根据y标签值自动调整权值与输入数据的类频率成反比,计算公式是:n_samples / (n_classes np.bincount(y)).“balanced_subsample”模式的与”balanced模式相同,只不过在每一次树增长过程中权值的计算是根据有放回样本的.

那么这么多样本怎么去调参呢,这里介绍sklearn中的神器:GridSearcherCV(),它使用交叉验证的方式,对某一分类器,你制定想要调参的名称和数值,作为一个字典传入进这个函数,然后它就会告诉你最佳的参数组合.(其实就是for for for都试试).下面是我的一段代码.

这里写代码片
from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestClassifier
#准备训练数据和y值
X_train, y_train = ...
#初步定义分类器
rfc = RandomForestClassifier(max_depth=2, random_state=0)
#需要选择的参数名称一起后选值
tuned_parameter = [{'min_samples_leaf':[1,2,3,4], 'n_estimators':[50,100,200]}]
#神器出场,cv设置交叉验证
clf = GridSearchCV(estimator=rfc,param_grid=tuned_parameters, cv=5, n_jobs=1)
#拟合训练集
clf.fit(X_train, y_train)
print('Best parameters:')
pritn(clf.best_params_)
---------------------

原文:https://blog.csdn.net/u012559520/article/details/77336098

随机森林参数理解与调优相关推荐

  1. 随机森林-参数设置及调优

    1.参数意义,参考网址:https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifie ...

  2. Random Forest算法参数解释及调优

    文章介绍了如何对随机森林模型进行参数调优 原文来自:http://www.analyticsvidhya.com/blog/2015/06/tuning-random-forest-model/ 为什 ...

  3. python 随机森林调参_Python机器学习实践:随机森林算法训练及调参-附代码

    原标题:Python机器学习实践:随机森林算法训练及调参-附代码 文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 来源 | 博客园 作者 | 战争热诚 ...

  4. 随机森林算法训练及调参-附代码

    随机森林算法的理论知识 随机森林是一种有监督学习算法,是以决策树为基学习器的集成学习算法.随机森林非常简单,易于实现,计算开销也很小,但是它在分类和回归上表现出非常惊人的性能,因此,随机森林被誉为&q ...

  5. Java启动参数与内存调优一些学习笔记

    转载自  Java启动参数与内存调优一些学习笔记 .参数的含义 -Xms128m JVM初始分配的堆内存 -Xmx512m JVM最大允许分配的堆内存,按需分配 -XX:PermSize=64M JV ...

  6. R语言使用caret包的train函数构建xgboost模型(基于linear算法)模型构建分类模型、trainControl函数设置交叉验证参数、自定义调优评估指标

    R语言使用caret包的train函数构建xgboost模型(基于linear算法)模型构建分类模型.trainControl函数设置交叉验证参数.自定义调优评估指标.tuneLength参数和tun ...

  7. R语言使用caret包的train函数构建xgboost模型(基于gbtree算法)模型构建分类模型、trainControl函数设置交叉验证参数、自定义调优评估指标

    R语言使用caret包的train函数构建xgboost模型(基于gbtree算法)模型构建分类模型.trainControl函数设置交叉验证参数.自定义调优评估指标.tuneLength参数和tun ...

  8. R语言使用caret包的train函数构建多项式核SVM模型(多项式核函数)模型构建分类模型、trainControl函数设置交叉验证参数、自定义调优评估指标

    R语言使用caret包的train函数构建多项式核SVM模型(多项式核函数)模型构建分类模型.trainControl函数设置交叉验证参数.自定义调优评估指标.tuneLength参数和tuneGri ...

  9. R语言使用caret包的train函数构建xgboost模型(基于dart算法)模型构建分类模型、trainControl函数设置交叉验证参数、自定义调优评估指标

    R语言使用caret包的train函数构建xgboost模型(基于dart算法)模型构建分类模型.trainControl函数设置交叉验证参数.自定义调优评估指标.tuneLength参数和tuneG ...

最新文章

  1. 30万|项目需求——针对点云立体重构的位姿测量技术
  2. LIVE 预告 | CVPR 2021 预讲 · 旷视专场,覆盖目标检测、蒸馏、图像降噪、人体姿态估计等...
  3. linux 无线网络配置工具wpa_supplicant与wireless-tools
  4. VC++6中的一些快捷键(陆续补充中。。。)
  5. 【bzoj 2002】弹飞绵羊
  6. 转载---sharepoint相关资源
  7. Mysqlbackup备份还原初识
  8. html怎么实现多语言图片切换,JavaScript实现--中英语言切换功能
  9. 【牛客 - 125A】灰魔法师(打表,暴力)
  10. mysql 分组查出来横向展示_MySQL汇总分析(group by)
  11. TeamViewer可以实现国际连接吗?
  12. 【请验收】证券开户系统常规版本【SIS-OAS1.52.0】即时验证---验证通过------生产验收报告模板...
  13. 身份证校验码计算:根据身份证前17位计算第18位校验码-c++实现
  14. 在线算法 离线算法
  15. google的搜索技巧(很全的)
  16. Cocos别踩白块儿案列1
  17. 【SpringBoot】springboot启动热部署
  18. 互联网世界的神奇逻辑
  19. .RibbonLoadBalancerClient does not define or inherit an implementation of the resolved method
  20. MacBook如何切换操作win系统?2023最新版Parallels虚拟机

热门文章

  1. 计算机网络(14)——可靠数据传输原理
  2. hexo 搭建个人博客
  3. 程序员编程表达爱情php,一个程序员的爱情表白书
  4. GRE填空中介词的常用搭配
  5. Unity批量更改脚本名字
  6. serialize与serializeArray读取整个表单内容
  7. java long 对应mybati类型_MyBatis常用的jdbcType数据类型
  8. CentOS 7 保姆级图文详细安装部署Apache教程
  9. oracle提示表名无效,ORACLE提示表名无效
  10. Spring的七种事务传播行为,通俗易懂,绝不笼统,可以背诵,应付面试