随机森林参数理解与调优
首先理解随机森林模型各参数的含义:
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.参数意义,参考网址:https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifie ...
- Random Forest算法参数解释及调优
文章介绍了如何对随机森林模型进行参数调优 原文来自:http://www.analyticsvidhya.com/blog/2015/06/tuning-random-forest-model/ 为什 ...
- python 随机森林调参_Python机器学习实践:随机森林算法训练及调参-附代码
原标题:Python机器学习实践:随机森林算法训练及调参-附代码 文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 来源 | 博客园 作者 | 战争热诚 ...
- 随机森林算法训练及调参-附代码
随机森林算法的理论知识 随机森林是一种有监督学习算法,是以决策树为基学习器的集成学习算法.随机森林非常简单,易于实现,计算开销也很小,但是它在分类和回归上表现出非常惊人的性能,因此,随机森林被誉为&q ...
- Java启动参数与内存调优一些学习笔记
转载自 Java启动参数与内存调优一些学习笔记 .参数的含义 -Xms128m JVM初始分配的堆内存 -Xmx512m JVM最大允许分配的堆内存,按需分配 -XX:PermSize=64M JV ...
- R语言使用caret包的train函数构建xgboost模型(基于linear算法)模型构建分类模型、trainControl函数设置交叉验证参数、自定义调优评估指标
R语言使用caret包的train函数构建xgboost模型(基于linear算法)模型构建分类模型.trainControl函数设置交叉验证参数.自定义调优评估指标.tuneLength参数和tun ...
- R语言使用caret包的train函数构建xgboost模型(基于gbtree算法)模型构建分类模型、trainControl函数设置交叉验证参数、自定义调优评估指标
R语言使用caret包的train函数构建xgboost模型(基于gbtree算法)模型构建分类模型.trainControl函数设置交叉验证参数.自定义调优评估指标.tuneLength参数和tun ...
- R语言使用caret包的train函数构建多项式核SVM模型(多项式核函数)模型构建分类模型、trainControl函数设置交叉验证参数、自定义调优评估指标
R语言使用caret包的train函数构建多项式核SVM模型(多项式核函数)模型构建分类模型.trainControl函数设置交叉验证参数.自定义调优评估指标.tuneLength参数和tuneGri ...
- R语言使用caret包的train函数构建xgboost模型(基于dart算法)模型构建分类模型、trainControl函数设置交叉验证参数、自定义调优评估指标
R语言使用caret包的train函数构建xgboost模型(基于dart算法)模型构建分类模型.trainControl函数设置交叉验证参数.自定义调优评估指标.tuneLength参数和tuneG ...
最新文章
- 30万|项目需求——针对点云立体重构的位姿测量技术
- LIVE 预告 | CVPR 2021 预讲 · 旷视专场,覆盖目标检测、蒸馏、图像降噪、人体姿态估计等...
- linux 无线网络配置工具wpa_supplicant与wireless-tools
- VC++6中的一些快捷键(陆续补充中。。。)
- 【bzoj 2002】弹飞绵羊
- 转载---sharepoint相关资源
- Mysqlbackup备份还原初识
- html怎么实现多语言图片切换,JavaScript实现--中英语言切换功能
- 【牛客 - 125A】灰魔法师(打表,暴力)
- mysql 分组查出来横向展示_MySQL汇总分析(group by)
- TeamViewer可以实现国际连接吗?
- 【请验收】证券开户系统常规版本【SIS-OAS1.52.0】即时验证---验证通过------生产验收报告模板...
- 身份证校验码计算:根据身份证前17位计算第18位校验码-c++实现
- 在线算法 离线算法
- google的搜索技巧(很全的)
- Cocos别踩白块儿案列1
- 【SpringBoot】springboot启动热部署
- 互联网世界的神奇逻辑
- .RibbonLoadBalancerClient does not define or inherit an implementation of the resolved method
- MacBook如何切换操作win系统?2023最新版Parallels虚拟机