H2O中的随机森林算法介绍及其项目实战(python实现)

包的引入:from h2o.estimators.random_forest import H2ORandomForestEstimator

H2ORandomForestEstimator 的常用方法和参数介绍:

(一)建模方法:

model =H2ORandomForestEstimator(ntrees=n,max_depth =m)

model.train(x=random_pv.names,y='Catrgory',training_frame=trainData)

通过trainData来构建随机森林模型,model.train中的trainData训练集预测变量名称预测 响应变量的名称

(二)预测方法:

pre_tag=H2ORandomForestEstimator.predict(model ,test_data) 利用训练好的模型来对测试集进行预测,其中的model训练好的模型test_data:测试集

(三)算法参数说明:

(1)ntrees:构建模型时要生成的树的棵树。

(2)max_depth :每棵树的最大深度。

项目要求:

题目一: 利用train.csv中的数据,通过H2O框架中的随机森林算法构建分类模型,然后利用模型对 test.csv中的数据进行预测,并计算分类的准确度进而评价模型的分类效果;通过调节参 数,观察分类准确度的变化情况。 注:准确度=预测正确的数占样本数的比例

题目二: 通过H2o Flow 的随机森林算法,用同题目一中所用同样的训练数据和参数,构建模型; 参看模型中特征的重要性程度,从中选取前8个特征,再去训练模型,并重新预测结果, 进而计算分类的准确度。

需求完成内容:2个题目的代码,认为最好的准确度的输出值和test数据与预测结果合并 后的数据集,命名为predict.csv

python实现代码如下:

(1) 题目一:

  1. #手动进行调节参数得到最好的准确率
  2. import pandas as pd
  3. import numpy as np
  4. import matplotlib.pyplot as plt
  5. import h2o
  6. h2o.init()
  7. from h2o.estimators.random_forest import H2ORandomForestEstimator
  8. from __future__ import division
  9. df=h2o.import_file('train.csv')
  10. trainData=df[2:]
  11.  
  12. model=H2ORandomForestEstimator(ntrees=6,max_depth =16)
  13. model.train(x=trainData.names,y='Catrgory',training_frame=trainData)
  14. df2=h2o.import_file('test.csv')
  15. test_data=df2[2:]
  16. pre_tag=H2ORandomForestEstimator.predict(model ,test_data)
  17. predict=df2.concat(pre_tag)
  18. dfnew=predict[predict['Catrgory']==predict['predict']]
  19. Precision=dfnew.nrow/predict.nrow
  20.  
  21. print(Precision)
  22. h2o.download_csv(predict,'predict.csv')

运行结果最好为87.0833%-6-16,如下

  1. #for循环进行调节参数得到最好的准确率
  1. import pandas as pd
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. import h2o
  5. h2o.init()
  6. from h2o.estimators.random_forest import H2ORandomForestEstimator
  7. from __future__ import division
  8. df=h2o.import_file('train.csv')
  9. trainData=df[2:]
  10. df2=h2o.import_file('test.csv')
  11. test_data=df2[2:]
  12. Precision=0
  13. nt=0
  14. md=0
  15. for i in range(1,50):
  16. for j in range(1,50):
  17. model=H2ORandomForestEstimator(ntrees=i,max_depth =j)
  18. model.train(x=trainData.names,y='Catrgory',training_frame=trainData)
  19. pre_tag=H2ORandomForestEstimator.predict(model ,test_data)
  20. predict=df2.concat(pre_tag)
  21. dfnew=predict[predict['Catrgory']==predict['predict']]
  22. p=dfnew.nrow/predict.nrow
  23. if Precision<p:
  24. Precision=p
  25. nt=i
  26. md=j
  27.  
  28. print(Precision)
  29. print(i)
  30. print(j)
  31. h2o.download_csv(predict,'predict.csv')

 运行结果最好为87.5%-49-49,如下

(2)题目二:建模如下,之后挑出排名前8的特征进行再次建模

  1. #手动调节参数得到最大准确率
  2. import pandas as pd
  3. import numpy as np
  4. import matplotlib.pyplot as plt
  5. import h2o
  6. h2o.init()
  7. from h2o.estimators.random_forest import H2ORandomForestEstimator
  8. from __future__ import division
  9. df=h2o.import_file('train.csv')
  10. trainData=df[['Average_speed','r_a','r_b','v_a','v_d','Average_RPM','Variance_speed','v_c','Catrgory']]
  11. df2=h2o.import_file('test.csv')
  12. test_data=df2[['Average_speed','r_a','r_b','v_a','v_d','Average_RPM','Variance_speed','v_c','Catrgory']]
  13.  
  14. model=H2ORandomForestEstimator(ntrees=5,max_depth =18)
  15. model.train(x=trainData.names,y='Catrgory',training_frame=trainData)
  16.  
  17. pre_tag=H2ORandomForestEstimator.predict(model ,test_data)
  18. predict=df2.concat(pre_tag)
  19. dfnew=predict[predict['Catrgory']==predict['predict']]
  20. Precision=dfnew.nrow/predict.nrow
  21.  
  22. print(Precision)
  23. h2o.download_csv(predict,'predict.csv')

  运行结果最好为87.5%-5-18,如下

  1. #for循环调节参数得到最大正确率
  2. import pandas as pd
  3. import numpy as np
  4. import matplotlib.pyplot as plt
  5. import h2o
  6. h2o.init()
  7. from h2o.estimators.random_forest import H2ORandomForestEstimator
  8. from __future__ import division
  9. df=h2o.import_file('train.csv')
  10. trainData=df[['Average_speed','r_a','r_b','v_a','v_d','Average_RPM','Variance_speed','v_c','Catrgory']]
  11. df2=h2o.import_file('test.csv')
  12. test_data=df2[['Average_speed','r_a','r_b','v_a','v_d','Average_RPM','Variance_speed','v_c','Catrgory']]
  13. Precision=0
  14. nt=0
  15. md=0
  16. for i in range(1,50):
  17. for j in range(1,50):
  18. model=H2ORandomForestEstimator(ntrees=i,max_depth =j)
  19. model.train(x=trainData.names,y='Catrgory',training_frame=trainData)
  20. pre_tag=H2ORandomForestEstimator.predict(model ,test_data)
  21. predict=df2.concat(pre_tag)
  22. dfnew=predict[predict['Catrgory']==predict['predict']]
  23. p=dfnew.nrow/predict.nrow
  24. if Precision<p:
  25. Precision=p
  26. nt=i
  27. md=j
  28.  
  29. print(Precision)
  30. print(i)
  31. print(j)
  32. h2o.download_csv(predict,'predict.csv')

 运行结果最好为87.5%-49-49,如下 

H2O中的随机森林算法介绍及其项目实战(python实现)的更多相关文章

  1. 随机森林入门攻略(内含R、Python代码)

    随机森林入门攻略(内含R.Python代码) 简介 近年来,随机森林模型在界内的关注度与受欢迎程度有着显著的提升,这多半归功于它可以快速地被应用到几乎任何的数据科学问题中去,从而使人们能够高效快捷地获 ...

  2. R语言︱决策树族——随机森林算法

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:有一篇<有监督学习选择深度学习 ...

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

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

  4. 用Python实现随机森林算法,深度学习

    用Python实现随机森林算法,深度学习 拥有高方差使得决策树(secision tress)在处理特定训练数据集时其结果显得相对脆弱.bagging(bootstrap aggregating 的缩 ...

  5. spark 随机森林算法案例实战

    随机森林算法 由多个决策树构成的森林,算法分类结果由这些决策树投票得到,决策树在生成的过程当中分别在行方向和列方向上添加随机过程,行方向上构建决策树时采用放回抽样(bootstraping)得到训练数 ...

  6. RandomForest 随机森林算法与模型参数的调优

    公号:码农充电站pro 主页:https://codeshellme.github.io 本篇文章来介绍随机森林(RandomForest)算法. 1,集成算法之 bagging 算法 在前边的文章& ...

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

    在集成学习原理小结中,我们讲到了集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系.另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合. ...

  8. R语言︱机器学习模型评估方案(以随机森林算法为例)

    笔者寄语:本文中大多内容来自<数据挖掘之道>,本文为读书笔记.在刚刚接触机器学习的时候,觉得在监督学习之后,做一个混淆矩阵就已经足够,但是完整的机器学习解决方案并不会如此草率.需要完整的评 ...

  9. 随机森林算法-Deep Dive

    0-写在前面 随机森林,指的是利用多棵树对样本进行训练并预测的一种分类器.该分类器最早由Leo Breiman和Adele Cutler提出.简单来说,是一种bagging的思想,采用bootstra ...

随机推荐

  1. 喜马拉雅FM接入

    最近有考虑接入,但是一方面由于沟通不畅等,另一方面没有浏览开发者协议,品牌规范等,多走了很多弯路,所以记下接入的注意事项和关键点 一. 接入前准备工作 喜马拉雅FM开放平台地址:http://open ...

  2. Ubuntu 13.10 安装软件失败后出现的问题——已安装 post-installation 脚本 返回了错误号 1

    安装Oracle-java7-installer失败后,再次重新安装后出现错误-- dpkg: error processing oracle-java7-installer (--configure ...

  3. CentOS7.2安装pure-ftpd 及其配置项

    CentOS7.2安装FTP(pure-ftpd-1.0.43) 原文链接: https://www.linuxidc.com/Linux/2016-10/135971.htm [日期:2016-10 ...

  4. glide 镜像

    运行glide install 失败  国内墙的原因, 某些网站上不去 [ERROR]Update failed for golang.org/x/crypto: Cannot detect VCS ...

  5. wordxml文档格式说明

    近期需要对word xml文档进行各种操作,需要熟悉 wordxml 文档格式,搜索了一番后发现 open xml sdk 官网的文档最好.就按照官网说明来记录一番 1 word xml 文档基本格式 ...

  6. mongoimport mongo导入Json的用法

    //导入json mongoimport --db ML_OER --collection lecture --file /home/tmp/course_temp.json //导入Json数组 m ...

  7. 解决 SQL Server 所有帐号无 sysadmin 权限,且未启用 SQL Server 身份验证,sa 帐号也未启用的问题

    解决 未启用 SQL Server 身份验证 的问题: 1. 运行 regedit,进入注册表编辑器 2. 打开:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Micro ...

  8. Atitit http2 新特性

    Atitit http2 新特性 性能 安全与push Multipexing 多路复用 每个 Frame Header 都有一个 Stream ID 就是被用于实现该特性.每次请求/响应使用不同的 ...

  9. nginx 并发数问题思考:worker_connections,worker_processes与 max clients

    我相信,很多人都跟我一样,看书都不会太细致也不太认真思考,感觉书中讲的东西都应该是对的,最近读书时我发现以前认为理所当然的东西事实上压根都没有弄明白,最终的结果是,书是别人的,书中的知识也是别人的. ...

  10. [Windows Azure] Guidelines for Connecting to Windows Azure SQL Database

    Guidelines for Connecting to Windows Azure SQL Database 6 out of 12 rated this helpful - Rate this t ...