目录

1 什么是随机森林

1.1 集成学习

1.2 随机决策树

1.3 随机森林

1.4 投票

2 为什么要用它

3 使用方法

3.1 变量选择

3.2 分类

3.3 回归

4 一个简单的Python示例

结语

前言: 随机森林是一个非常灵活的机器学习方法,从市场营销到医疗保险有着众多的应用。它可以用于市场营销对客户获取和存留建模或预测病人的疾病风险和易感性。

随机森林能够用于分类和回归问题,可以处理大量特征,并能够帮助估计用于建模数据变量的重要性。

这篇文章是关于如何使用Python构建随机森林模型。

1 什么是随机森林

随机森林可以用于几乎任何一种预测问题(包括非线性问题)。它是一个相对较新的机器学习策略(90年代诞生于贝尔实验室)可以用在任何方面。它属于机器学习中的集成学习这一大类。

1.1 集成学习

集成学习是将多个模型进行组合来解决单一的预测问题。它的原理是生成多个分类器模型,各自独立地学习并作出预测。这些预测最后结合起来得到预测结果,因此和单独分类器的结果相比,结果一样或更好。

随机森林是集成学习的一个分支,因为它依靠于决策树的集成。

1.2 随机决策树

我们知道随机森林是将其他的模型进行聚合, 但具体是哪种模型呢?从其名称也可以看出,随机森林聚合的是分类(或回归) 树。一颗决策树是由一系列的决策组合而成的,可用于数据集的观测值进行分类 。

1.3 随机森林

引入的随机森林算法将自动创建随机决策树群。由于这些树是随机生成的,大部分的树(甚至 99.9%)对解决你的分类或回归问题是没有有意义。

1.4 投票

那么,生成甚至上万的糟糕的模型有什么好处呢?好吧,这确实没有。但有用的是,少数非常好的决策树也随之一起生成了。

当你要做预测的时候,新的观察值随着决策树自上而下走下来并被赋予一个预测值或标签。一旦森林中的每棵树都给有了预测值或标签,所有的预测结果将被归总到一起,所有树的投票返回做为最终的预测结果。

简单来说,99.9%不相关的树做出的预测结果涵盖所有的情况,这些预测结果将会彼此抵消。少数优秀的树的预测结果将会脱颖而出,从而得到一个好的预测结果。

2 为什么要用它

随机森林是机器学习方法中的Leatherman(多功能折叠刀)。你几乎可以把任何东西扔给它。它在估计推断映射方面做的特别好,从而不需要类似SVM医一样过多的调参(这点对时间紧迫的朋友非常好)。

2.1 一个映射的例子

随机森林可以在未经特意手工进行数据变换的情况下学习。以函数f(x)=log(x)为例。

我们将在Yhat自己的交互环境Rodeo中利用Python生成分析数据,你可以在here下载Rodeo的Mac,Windows和Linux的安装文件。

首先,我们先生成一下数据并添加噪声。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

importnumpyasnp

importpylabaspl

x=np.random.uniform(1,100,1000)

y=np.log(x)+np.random.normal(0,.3,1000)

pl.scatter(x,y,s=1,label="log(x) with noise")

pl.plot(np.arange(1,100),np.log(np.arange(1,100)),c="b",label="log(x) true function")

pl.xlabel("x")

pl.ylabel("f(x) = log(x)")

pl.legend(loc="best")

pl.title("A Basic Log Function")

pl.show()

得到如下结果:

如果我们建立了一个基本的线性模型通过使用x来预测y,我们需要作一条直线,一定成都市算是平分log(x)函数。而如果我们使用随机森林算法,它可以更好的逼近log(x)曲线从而使得它看起来更像实际的函数。

当然,你也可以说随机森林对log(x)函数有点过拟合。不管怎么样,这说明了随机森林并不限于线性问题。

3 使用方法

3.1 特征选择

随机森林的一个最好用例是特征选择。尝试很多个决策树变量的一个副产品就是,你可以检查变量在每棵树中表现的是最佳还是最糟糕。

当一些树使用一个变量,而其他的不使用这个变量,你就可以对比信息的丢失或增加。实现的比较好的随机森林工具能够为你做这些事情,所以你需要做的仅仅是去查看那个方法或参数。

在下述的例子中,我们尝试弄明白区分红酒或白酒时,哪些变量是最重要的。

3.2 分类

随机森林也很善长分类问题。它可以被用于为多个可能目标类别做预测,它也可以在调整后输出概率。你需要注意的一件事情是过拟合。

随机森林容易产生过拟合,特别是在数据集相对小的时候。当你的模型对于测试集合做出“太好”的预测的时候就应该怀疑一下了。避免过拟合的一个方法是在模型中只使用有相关性的特征,比如使用之前提到的特征选择。

3.3 回归

随机森林也可以用于回归问题。

我发现,不像其他的方法,随机森林非常擅长于分类变量或分类变量与连续变量混合的情况。

4 一个简单的Python示例

1

2

3

4

5

6

7

8

fromsklearn.datasetsimportload_iris

fromsklearn.ensembleimportRandomForestClassifier

importpandasaspd

importnumpyasnp

iris=load_iris()

df=pd.DataFrame(iris.data,columns=iris.feature_names)

df['is_train']=np.random.uniform(0,1,len(df))

下面就是你应该看到的结果了。由于我们随机选择数据,所以实际结果每次都会不一样。

preds

sertosa

versicolor

virginica

actual

sertosa

6

0

0

versicolor

0

16

1

virginica

0

0

12

python随机森林库_随机森林算法入门(python)相关推荐

  1. 数据结构与算法python语言实现答案_数据结构与算法:Python语言实现 源代码 PPT 练习答案 源码.zip...

    1 60660-数据结构与算法:Python语言实现[练习答案]Solutions Manual.rar 943.25 KB 2018/11/1 12:03:34 2 __MACOSX 0 Bytes ...

  2. python实现希尔排序_希尔排序算法的python实现

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. def shellSort(items): inc = len(items) / 2 wh ...

  3. python 标准模板库_比较了3个Python模板库

    python 标准模板库 在我的日常工作中,我花费大量时间将各种来源的数据整理成人类可读的信息. 虽然在很多时候,这只是以电子表格或某种类型的图表或其他数据可视化的形式出现,但在其他情况下,有意义的是 ...

  4. python随机森林库_随机森林库:R和Python中的不同结果

    下面的代码用R和python训练一个随机森林模型.正如您所注意到的,R(1-0.27=0.73)中的精度要比Python中的(0.69)好.此外,特性在R和Python中的重要性是不同的.在 [EDI ...

  5. python数据结构与算法分析_数据结构与算法(Python版)

    为什么研究数据结构与算法 本周带大家进入Python版数据结构与算法的学习.想必大家都听过"算法"一词,算法的学习对编程者来说是至关重要的.首先我们先了解一下为什么要研究数据结构与 ...

  6. python比java慢_对于这种算法,Python与Java相比非常慢

    我正在研究算法,并决定将Java程序从教科书移植到Python,因为我不喜欢Java的开销,特别是对于小程序来说,这是一种练习.在 算法本身非常简单,它只是以一种蛮力的方式从数组中取出所有的三元组,然 ...

  7. python的glob库_【按需学Python】 1. Glob库遍历路径/文件

    小前言(请跳过): 本人Python小白,因为最近想整理下近10几年的老照片,然后就有了用脚本批处理照片的想法. 初始需求其实很简单,就是筛选自己想要的照片到指定文件夹,然后按照exif信息重命名照片 ...

  8. python 文本处理库_推荐8种目前Python使用率最高的文本处理工具

    前言 文本处理一般包括词性标注,句法分析,关键词提取,文本分类,情感分析等等,这是针对中 文的,如果是对于英文来说,只需要基本的tokenize.本文为大家提供了以下这些工具包.我整理了Python的 ...

  9. python中datetime库_一天掌握一个Python库--datetime库

    #一天掌握一个Python库--datetime库 **datatime** 模块题共用一些处理日期,时间和时间间隔的函数.这个模块使用面向对象的交互取代了**time**模块中整形/元组类型的时间函 ...

最新文章

  1. 成为JavaGC专家(1)—深入浅出Java垃圾回收机制
  2. MySQL 用户创建及设置
  3. ubuntu16.04 制作gif
  4. Android一些知识总结
  5. 第七讲 虚拟机模板及大规模部署虚拟机
  6. 我常用的Latex中文报告模板(一)
  7. 【英语学习】【English L06】U06 Banking L6 Do you use online banking?
  8. KM算法 详解+模板
  9. 硬盘故障时如何强制关机:Input/output error
  10. vue学习(9)-路由守卫
  11. 乌班图apt添加阿里source
  12. 碳化硅纳米线,SiC纳米线(SiC nanowires),SiC短纤维(SiC fiber),SiC晶须(SiC whiskers)的主要应用方向,检测XRD图谱
  13. 3、TM4之GPIO的输入输出
  14. 安卓手机m3u8转为mp4格式100%有效的方法
  15. 调用app出现This app is not allowed to query for scheme...
  16. 世界技能大赛夺冠背后,亚马逊云科技如何培养云计算技能人才?
  17. 虚拟存储器与虚拟内存
  18. TS中的DTS、PTS、PCR
  19. 华为OD机试真题Java_2022-2023-题目0188-网上商城优惠活动(一)
  20. Windows Server2003系统安全设置

热门文章

  1. 开源免费 低代码平台开源_行动透明:免费代码营现已开源
  2. SecureCRT9.0.1、SecureFX9.0.1,windows与mac版本下载
  3. Linux性能检查命令总结
  4. 【Nginx 快速入门】反向代理、负载均衡、动静分离
  5. 女生找工作,非常有用,好好 收藏,以后肯定能用得上 (转)
  6. 数据库设计三大范式:
  7. mac环境下cocos2dx引擎3.x版本的创建工程步骤
  8. Docker-核心篇(1)-CentOS7安装Docker社区版
  9. 深入浅出 Docker
  10. 火锅尝后感,桌面虚拟化服务真的很重要