随机森林是一种集成学习方法

一、什么是集成学习方法?

集成学习通过建立几个模型组合的方法来解决单一预测问题。他的工作原理是生成多个分类器/模型,各自独立地学习和作出预测。这些预测最后结合成组合预测,因此优于任何一个单分类作出的预测。

二、什么是随机森林?

在机器学习中,随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。例如,如果你训练了5个树,其中有4个树的结果是True,1个树的结果为False,那么最终的投票结果就是True。

三、随机森原理的过程

两个随机(假设N个样本,M个特征)

  1. 训练集随机:从N个样本中随机有放回得抽样N个
    BootStrap(非前端框架):随机有放回的抽样

  2. 特征值随机:从M个特征中随机的抽取m个特征(M >> m)

为什么随机抽样?
答:如果不进行随机抽样,每颗树的训练集都一样,那么最终训练出来的树分类结果也是完全一样的;
为什么有放回抽样?
答:如果不是有放回的抽样,那么每颗树的训练样本是不一样的,都是没有交集的,这样每颗树都是有偏

四、随机森林API

sklearn.ensemble.RandomForestClassifier(n_estimators=10,criterion='gini',max_depth=None,bootstrap=True,random_state=None,min_samples_split=2)
- 随机森林分类器
- n_estimators:integer,optional(default=10)森林里的树木数量
- criterion:string,可选(default='gini')分割特征的测量方法
- max_depth:integer或None,可选(默认无)树的最大深度
- max_features='auto' 每个决策树的最大特征数量1.if 'auto',then max_feature=sqrt(n_features)2.if 'sqrt',then max_features=sqrt(n_features)(same as suto)3.if 'log2',then max_features=log2(n_features)4.if None,then max_features=n_features
- bootstrap:boolean,optional(default = True)在构建树时是否放回抽样
- min_samples_split:节点划分最少样本树
- min_samples_leaf:叶子节点最小样本数

代码如下所示(加入了超参数搜索):

import pandas as pd
from sklearn.feature_extraction import DictVectorizer
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.ensemble import RandomForestClassifierdef titanic_demo():# 1)、获取数据titanic = pd.read_csv("/Users/dengzhao/Desktop/数据集/titanic/train.csv")# 2)、筛选特征值和目标值x = titanic[["Pclass","Age","Sex"]]y = titanic["Survived"]# 3)、缺失值处理x["Age"].fillna(x["Age"].mean(),inplace=True)# 4、转换成字典x = x.to_dict(orient="records")# 5)、数据集的划分x_train,x_test,y_train,y_test = train_test_split(x,y,random_state=22)# random_state随机数种子# 6)、字典特征抽取transfer = DictVectorizer()x_train = transfer.fit_transform(x_train)x_test = transfer.transform(x_test)# 7)、转换器estimator = RandomForestClassifier()# 8)、模型评价# 加如网格搜索和交叉验证# 参数准备param_dic = {"n_estimators": [120,200,300,500,800,1200],'max_depth':[5,8,10,12,14]}estimator = GridSearchCV(estimator, param_grid=param_dic, cv=3)estimator.fit(x_train, y_train)# 5)模型评估"""评估方法1:直接比对真实值和预测值"""y_predict = estimator.predict(x_test)print("y_predict:\n", y_predict)print("直接比对真实值和预测值:\n", y_test == y_predict)"""评估方法2:计算准确率"""score = estimator.score(x_test, y_test)  # 相当于计算了预估器的准确率,因为这里本来是完全一致的print("准确率:\n", score)# 最佳参数:best_params_print("最佳参数\n", estimator.best_params_)# 最佳结果:best_score_print("最佳结果\n", estimator.best_score_)# 最佳估计器:best_estimator_print("最佳估计器\n", estimator.best_estimator_)# 交叉验证结果:cv_results_print("交叉验证结果\n", estimator.cv_results_)returnif __name__ == '__main__':titanic_demo()

结果如下:
准确率:
0.7623318385650224
最佳参数
{‘max_depth’: 5, ‘n_estimators’: 120}
最佳结果
0.8174093375887098
最佳估计器
RandomForestClassifier(max_depth=5, n_estimators=120)

五、总结

  • 在KNN,决策树等算法中,具有极好的准确率
  • 能够有效地运行在大数据集上,处理具有高维特征的输入样本,而且不需要降维
  • 能够评估各个特征在分类问题上的重要性

机器学习之随机森林算法相关推荐

  1. Python机器学习笔记——随机森林算法

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

  2. 机器学习:随机森林算法及其实现

    文章目录 随机森林算法描述: 如何对features进行bootstrap? 算法代码实现: 随机森林算法描述: 如何对features进行bootstrap? 我们需要一个feature_bound ...

  3. Educoder 机器学习之随机森林算法 第2关:随机森林算法流程

    第2关:随机森林算法流程 任务描述 本关任务:补充 python 代码,完成 RandomForestClassifier 类中的 fit 和 predict 函数.请不要修改 Begin-End 段 ...

  4. Educoder 机器学习之随机森林算法 第1关:Bagging

    第1关:Bagging 任务描述 相关知识 什么是Bagging Bagging方法如何训练与预测 训练 预测 编程要求 测试说明 任务描述 本关任务:补充 python 代码,完成 BaggingC ...

  5. Educoder 机器学习之随机森林算法 第3关:手写数字识别

    第3关:手写数字识别 任务描述 相关知识 数据简介 RandomForestClassifier 编程要求 测试说明 任务描述 本关任务:使用 sklearn 中的 RandomForestClass ...

  6. 机器学习-集成之随机森林算法原理及实战

    Bagging和随机森林 前言 集成学习是目前机器学习的一大热门方向.简单来说,集成学习就是组合许多弱模型以得到一个预测结果比较好的强模型.对于常见的分类问题就是指采用多个分类器对数据集进行预测,把这 ...

  7. 随机森林的特征 是放回抽样么_机器学习超详细实践攻略(10):随机森林算法详解及小白都能看懂的调参指南...

    一.什么是随机森林 前面我们已经介绍了决策树的基本原理和使用.但是决策树有一个很大的缺陷:因为决策树会非常细致地划分样本,如果决策树分得太多细致,会导致其在训练集上出现过拟合,而如果决策树粗略地划分样 ...

  8. 【机器学习】P25 随机森林算法(2) 实现 “波士顿房价” 预测

    随机森林算法 Random Forest Algorithm 随机森林算法 随机森林算法实现波士顿房价预测 随机森林算法 随机森林(Random Forest)算法 是一种 集成学习(Ensemble ...

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

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

  10. 随机森林分类算法python代码_Python机器学习笔记:随机森林算法

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

最新文章

  1. 学习OpenCV——粒子滤波(网上两篇文章总结)
  2. hough变换检测圆周_【视觉】视觉检测人应该了解的缺陷检测方法
  3. 利用pyinstaller打包python3程序
  4. MFC基于多文档框架(对话框内嵌office控件(word文档))
  5. linux服务器i o模型,高性能服务器框架--I/O模型
  6. java课程设计学生信息管理_JAVA课程设计---学生基本信息管理系统
  7. 在线购物系统 实验七 顺序图
  8. 【微信小程序】微信小程序项目开发哔哩哔哩小程序
  9. 朋游风景:让智能手机成为贴身导游
  10. 计算机桌面进入安全模式,win7安全模式无法入桌面怎么办?无法进入桌面解法...
  11. 阿里云ECS服务器Linux第一次登录 提示Login Incorrect的解决方法
  12. 软件安全与脆弱性分析-对于freenote小程序的Poc分析
  13. 打发时光的102个网站
  14. [Office]Win7(x64)旗舰版安装Office 2013专业版的过程中提示在安装过程中出错
  15. 网页端封装生成app移动端,是开发者的热门趋势
  16. Python 使用skimage实现求两幅图像之间的PSNR值
  17. M7450,M7450F,M7400,M7650,系列固件升级程序
  18. 荣耀手环6和华为手环b6区别 哪个好
  19. 在 artDialog 窗口中追加最大化、最小化按钮
  20. 软件集成:Simulink与Arduino联合开发

热门文章

  1. WPF基础系列六:MVVM框架
  2. python出入库_基于Python对Excel数据入库的处理
  3. python爬虫模拟登录之图片验证码
  4. 介绍一款非常好用的高效率截图工具----Snipaste(下载及安装)
  5. 魅族Android版本,魅族Flyme安卓版本
  6. android 5.1 改mac地址,mac地址可以随便改吗
  7. 8086cpu 计算机,基于8086 CPU 的单芯片计算机系统的设计
  8. 5G NR CDRX
  9. mysql 2037年_Correct way to store MySQL date after year 2037
  10. Mac SnailSVN不显示状态图标