2016年08月17日 10:32:42 铭霏 阅读数:36874
 
版权声明:本文为博主原创文章,博主转载请附加原文链接并声明。 https://blog.csdn.net/u012102306/article/details/52228516

本篇不是介绍RF的,关于RF网上有很多通俗易懂的解释
西瓜书与统计学习方法等很多教材中的解释也都足够
本篇仅针对如何使用sklearn中的RandomForestClassifier作记录

一、代码怎么写

  1. class sklearn.ensemble.RandomForestClassifier(n_estimators=10, crite-rion=’gini’, max_depth=None,
  2. min_samples_split=2, min_samples_leaf=1,
  3. min_weight_fraction_leaf=0.0,
  4. max_features=’auto’,
  5. max_leaf_nodes=None, bootstrap=True,
  6. oob_score=False, n_jobs=1, ran-dom_state=None, verbose=0,
  7. warm_start=False, class_weight=None)

二、关于参数

其中关于决策树的参数:

criterion: ”gini” or “entropy”(default=”gini”)是计算属性的gini(基尼不纯度)还是entropy(信息增益),来选择最合适的节点。

splitter: ”best” or “random”(default=”best”)随机选择属性还是选择不纯度最大的属性,建议用默认。

max_features: 选择最适属性时划分的特征不能超过此值。

当为整数时,即最大特征数;当为小数时,训练集特征数*小数;

if “auto”, then max_features=sqrt(n_features).

If “sqrt”, thenmax_features=sqrt(n_features).

If “log2”, thenmax_features=log2(n_features).

If None, then max_features=n_features.

max_depth: (default=None)设置树的最大深度,默认为None,这样建树时,会使每一个叶节点只有一个类别,或是达到min_samples_split。

min_samples_split:根据属性划分节点时,每个划分最少的样本数。

min_samples_leaf:叶子节点最少的样本数。

max_leaf_nodes: (default=None)叶子树的最大样本数。

min_weight_fraction_leaf: (default=0) 叶子节点所需要的最小权值

verbose:(default=0) 是否显示任务进程

关于随机森林特有的参数:

n_estimators=10:决策树的个数,越多越好,但是性能就会越差,至少100左右(具体数字忘记从哪里来的了)可以达到可接受的性能和误差率。

bootstrap=True:是否有放回的采样。

oob_score=False:oob(out
of band,带外)数据,即:在某次决策树训练中没有被bootstrap选中的数据。多单个模型的参数训练,我们知道可以用cross
validation(cv)来进行,但是特别消耗时间,而且对于随机森林这种情况也没有大的必要,所以就用这个数据对决策树模型进行验证,算是一个简单的交叉验证。性能消耗小,但是效果不错。

n_jobs=1:并行job个数。这个在ensemble算法中非常重要,尤其是bagging(而非boosting,因为boosting的每次迭代之间有影响,所以很难进行并行化),因为可以并行从而提高性能。1=不并行;n:n个并行;-1:CPU有多少core,就启动多少job

warm_start=False:热启动,决定是否使用上次调用该类的结果然后增加新的。

class_weight=None:各个label的权重。

进行预测可以有几种形式:

predict_proba(x):给出带有概率值的结果。每个点在所有label的概率和为1.

predict(x):直接给出预测结果。内部还是调用的predict_proba(),根据概率的结果看哪个类型的预测值最高就是哪个类型。

predict_log_proba(x):和predict_proba基本上一样,只是把结果给做了log()处理。

最新文章

  1. crontab介绍
  2. angularjs 作用域
  3. Java for LeetCode 226 Invert Binary Tree
  4. VS中遇到的奇怪问题
  5. 共享内存+互斥量实现linux进程间通信 分类: Linux C/C++ 2015-03-26 17:14 67人阅读 评论(0) 收藏
  6. Java集合类之栈Stack
  7. Semaphore的介绍和使用
  8. Mybatis框架解析之Builder解析
  9. 【Cocos游戏实战】功夫小子第七课之游戏主功能场景逻辑功能和暂停功能场景的分析和实现
  10. xml 和数组的相互转化
  11. 【python标准库模块四】Json模块和Pickle模块学习
  12. Spring boot 发送邮件示例
  13. org.apache.flume.conf.ConfigurationException: Channel c1 not in active set.
  14. Markdown使用方法
  15. Java8简明指南
  16. spring RequestMapping 包含http的部分以及各部分详解
  17. listView优化方案
  18. ABTest灰度发布
  19. Redis—数据结构之list
  20. React 组件模式

热门文章

  1. 【LeetCode算法-21】Merge Two Sorted Lists
  2. Oracle Spatial分区应用研究之二:按县分区与按省分区对比测试报告
  3. GridView树状结构显示
  4. c++中的不是数的数nan
  5. Markdown 测试用例
  6. Asp.net Core CORS 跨域
  7. python基础 — 文件操作
  8. hdu1016 Prime Ring Problem【素数环问题(经典dfs)】
  9. warning: LF will be replaced by CRLF in application.yml. The file will have its origina解决方法
  10. 深度自适应增量学习(Incremental Learning Through Deep Adaptation)