Python 回忆录

  • 2021/06/08
    • 集成学习方法
    • 随机森林
      • 建立多个树的过程
      • 随机森林的API
      • API使用案例
      • 优缺点

2021/06/08

集成学习方法

通过建立多个模型来解决单一的预测问题,其实就可以比喻成多个不同的人来解决同一个问题。这些模型最后预测的结果合成单预测,这样的预测结果优于任何一个单分类的结果。

随机森林

随机森林也是一个集成学习方法,主要就是多个决策树模型来解决一个问题。比如,你训练了5个树,其中4个树的结果是true,1个树的结果是false, 那么最终结果就是少数服从多数 为True 。

建立多个树的过程

现在有N个样本, M个特征
建立多个树,其实就是随机的建立单个树
单个树建立过程

  1. 随机在N个样本当中选择一个样本,重复N次 样本可能会重复。为了让样本数相等
  2. 随机在M个特征中选出m个特征
    之后建立10棵决策树,每个决策树的样本,特征大多不一样。每个树都是随机有放回的抽样(bootstrop)

随机森林的API

sklearn.ensemble.RandomForestClassifier(n_estimators = 10,criterlon = "gini",max_depth= None, bootstrap = True,random_state = None)

n_estimators: int 森林里的树木数量
criteria:string 分割特征的测量方法
max_depth: int 树的深度 默认无
max_features = “auto” 每个决策树最大特征量
bootstrap: boolean 是否在构建树时使用放回抽样 默认为True

API使用案例

和前一篇文章的案例一样, 都是使用泰坦尼克号的数据 推测存活情况。

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.feature_extraction import DictVectorizer
import pandas as pddef randomforest():#读取数据titan = pd.read_csv("http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt")#选择特征x= titan[['pclass','age','sex']]y= titan[['survived']]#缺失值处理x['age'].fillna(x['age'].mean(),inplace=True)#分割数据为训练集和测试集x_train,x_test,y_train,y_test = train_test_split(x,y,test_size = 0.25)#特征进行处理dict = DictVectorizer(sparese=False)x_train = dict.fit_transform(x_train.to_dict(orient='record'))x_test = dict.transform(x_test.to_dict(orient='record'))#用随机森林进行预测rf = RandomForestClassifier()param = {"n_estimators":[120,200,300,500,800,1200],"max_depth":[5,8,15,25,30]}#网格搜索与交叉验证gc = GridSearchCV(rf ,param_grid= param,cv=2)gc.fit(x_train,y_train)print("准确率",gc.score(x_test,y_test))print("最优参数",gc.best_params_)if __name__ == "__main__":randomforest()

优缺点

优点

  • 具有很好准确率
  • 能够有效的运行在大数据集上(多样本数和多特征数)
  • 能够处理具有高维特征的输入样本,而且不需要降维
  • 能够评估各个特征在分类问题上的重要性
    缺点
  • 需要选好合适的参数

Day 52: 随机森林相关推荐

  1. 机器学习(10)随机森林(预测泰坦尼克号旅客存活率)

    目录 一.基础理论 1.集成学习方法 2.随机森林 API 二.过程 1.创建随机森林预估器 2.参数准备(网格搜索) 3.训练 模型评估结果: 总代码 一.基础理论 1.集成学习方法 集成学习通过建 ...

  2. Bagging与随机森林算法原理小结

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 在集成学习原理小结中,我们讲到了集成学习有两个流派,一个是boos ...

  3. 随机森林——气温预测(2/2)

    python数据分析个人学习读书笔记-目录索引 第9章--随机森林项目实战--气温预测(2/2) 第8章已经讲解过随机森林的基本原理,本章将从实战的角度出发,借助Python工具包完成气温预测任务,其 ...

  4. [Hands On ML] 7. 集成学习和随机森林

    文章目录 1. 投票分类 2. Bagging.Pasting 3. Out of Bag 评价 4. 随机贴片与随机子空间 5. 随机森林 6. 极端随机树 Extra-Trees 7. 特征重要程 ...

  5. 贷款利润最大化——利用随机森林和逻辑回归

    文章目录 分析目的 一.数据采集 1.数据来源 2.数据说明 二.数据传输 三.数据处理 1.查看数据 2.清理无用特征值 3.标签列分析 4.清理只单一值的列 5.空值处理 6.数据类型转换 四.数 ...

  6. 一套完整的基于随机森林的机器学习流程(特征选择、交叉验证、模型评估))...

    机器学习实操(以随机森林为例) 为了展示随机森林的操作,我们用一套早期的前列腺癌和癌旁基因表达芯片数据集,包含102个样品(50个正常,52个肿瘤),2个分组和9021个变量 (基因).(https: ...

  7. 机器学习第20篇 - 基于Boruta选择的特征变量构建随机森林

    前面机器学习第18篇 - Boruta特征变量筛选(2)已经完成了特征变量筛选,下面看下基于筛选的特征变量构建的模型准确性怎样? 定义一个函数生成一些列用来测试的mtry (一系列不大于总变量数的数值 ...

  8. sklearn模型使用贝叶斯优化调参(以随机森林为例)

    文章目录 1. 构造数据源 2. 构造黑盒目标函数 3. 确定取值空间 4. 构造贝叶斯优化器 5. 运行,导出结果与最优参数 全部代码 贝叶斯优化github地址:https://github.co ...

  9. 机器学习之路:python 集成分类器 随机森林分类RandomForestClassifier 梯度提升决策树分类GradientBoostingClassifier 预测泰坦尼克号幸存者...

    python3 学习使用随机森林分类器 梯度提升决策树分类 的api,并将他们和单一决策树预测结果做出对比 附上我的git,欢迎大家来参考我其他分类器的代码: https://github.com/l ...

最新文章

  1. java两个jre_为什么会有两个jre?060925(原创)
  2. android 酷狗demo_Android仿酷狗旋转界面功能-自定义控件实现
  3. 从2元钱到年赚20亿元的传奇经历!相信对你一定会有很大的启发!
  4. java converttobase64_Java 工具箱 | 图片-Base64 互转
  5. Zookeeper脑图
  6. 第一行代码--笔记(3)
  7. Spring Batch开发简单入门实践
  8. 在未知社交网络中最大化影响力(论文翻译)
  9. Java零基础入门(五)
  10. FT232R国产替代GP232RLUSB2.0串口芯片
  11. (原创)巧用通道作颜色网
  12. pdf文件如何转换成word?
  13. Kubernetes 1.12.0 Kube-controller-manager之node-ipam-controller源码阅读分析
  14. solidity-msg.sender到底是什么?
  15. Netty的深入浅出--79.Netty官方Reference Counted Objects文档说明
  16. android 恢复出厂设置 代码,android恢复出厂设置以及系统升级流程
  17. CMS功能(简介和配置)
  18. 清华周界详解《基于图神经网络的事实验证》 | 百万人学AI
  19. R语言ggplot2可视化:使用patchwork包将两个ggplot2可视化结果组合起来、使用labs函数为第二个子图添加标题信息
  20. Matlab怎么从table变成matrix

热门文章

  1. 项目管理工具+软件开发、云计算、数据分析和机器学习工具
  2. 2012.5 中端娱乐攒机配置
  3. JavaScript中利用for循环遍历数组
  4. 如何通过Mac键盘在iPhone、iPad上快速打字?
  5. 老板,你请了多少店员帮你赶客?
  6. 写书用什么软件好_什么软件记事好?苹果手机上有什么实用的便签记事本软件推荐吗...
  7. flyway常用配置_Flyway学习笔记
  8. 【华为机试真题 Python实现】字符串分割
  9. hd5的关闭报错,文件报错等
  10. 【100%通过率】华为OD机试真题 Python 实现【分奖金】【2022.11 Q4 新题】