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


Posted in Python onAugust 29, 2019

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:训练集,x:预测变量名称,y:预测 响应变量的名称

(二)预测方法:

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) 题目一:

#手动进行调节参数得到最好的准确率
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import h2o
h2o.init()
from h2o.estimators.random_forest import H2ORandomForestEstimator
from __future__ import division 
df=h2o.import_file('train.csv')
trainData=df[2:]
 
model=H2ORandomForestEstimator(ntrees=6,max_depth =16)
model.train(x=trainData.names,y='Catrgory',training_frame=trainData)
df2=h2o.import_file('test.csv')
test_data=df2[2:]
pre_tag=H2ORandomForestEstimator.predict(model ,test_data)
predict=df2.concat(pre_tag)
dfnew=predict[predict['Catrgory']==predict['predict']]
Precision=dfnew.nrow/predict.nrow
 
print(Precision)
h2o.download_csv(predict,'predict.csv')

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

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

#for循环进行调节参数得到最好的准确率
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import h2o
h2o.init()
from h2o.estimators.random_forest import H2ORandomForestEstimator
from __future__ import division 
df=h2o.import_file('train.csv')
trainData=df[2:]
df2=h2o.import_file('test.csv')
test_data=df2[2:]
Precision=0
nt=0
md=0
for i in range(1,50):
    for j in range(1,50):
      model=H2ORandomForestEstimator(ntrees=i,max_depth =j)
      model.train(x=trainData.names,y='Catrgory',training_frame=trainData)
      pre_tag=H2ORandomForestEstimator.predict(model ,test_data)
      predict=df2.concat(pre_tag)
      dfnew=predict[predict['Catrgory']==predict['predict']]
      p=dfnew.nrow/predict.nrow
      if Precision<p:
        Precision=p
        nt=i
        md=j
 
print(Precision)
print(i)
print(j)
h2o.download_csv(predict,'predict.csv')

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

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

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

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

#手动调节参数得到最大准确率
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import h2o
h2o.init()
from h2o.estimators.random_forest import H2ORandomForestEstimator
from __future__ import division 
df=h2o.import_file('train.csv')
trainData=df[['Average_speed','r_a','r_b','v_a','v_d','Average_RPM','Variance_speed','v_c','Catrgory']]
df2=h2o.import_file('test.csv')
test_data=df2[['Average_speed','r_a','r_b','v_a','v_d','Average_RPM','Variance_speed','v_c','Catrgory']]
 
model=H2ORandomForestEstimator(ntrees=5,max_depth =18)
model.train(x=trainData.names,y='Catrgory',training_frame=trainData)
 
pre_tag=H2ORandomForestEstimator.predict(model ,test_data)
predict=df2.concat(pre_tag)
dfnew=predict[predict['Catrgory']==predict['predict']]
Precision=dfnew.nrow/predict.nrow
 
print(Precision)
h2o.download_csv(predict,'predict.csv')

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

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

#for循环调节参数得到最大正确率
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import h2o
h2o.init()
from h2o.estimators.random_forest import H2ORandomForestEstimator
from __future__ import division 
df=h2o.import_file('train.csv')
trainData=df[['Average_speed','r_a','r_b','v_a','v_d','Average_RPM','Variance_speed','v_c','Catrgory']]
df2=h2o.import_file('test.csv')
test_data=df2[['Average_speed','r_a','r_b','v_a','v_d','Average_RPM','Variance_speed','v_c','Catrgory']]
Precision=0
nt=0
md=0
for i in range(1,50):
    for j in range(1,50):
      model=H2ORandomForestEstimator(ntrees=i,max_depth =j)
      model.train(x=trainData.names,y='Catrgory',training_frame=trainData)
      pre_tag=H2ORandomForestEstimator.predict(model ,test_data)
      predict=df2.concat(pre_tag)
      dfnew=predict[predict['Catrgory']==predict['predict']]
      p=dfnew.nrow/predict.nrow
      if Precision<p:
        Precision=p
        nt=i
        md=j
 
print(Precision)
print(i)
print(j)
h2o.download_csv(predict,'predict.csv')

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python3.6.0+opencv3.3.0人脸检测示例
May 25 Python
python实现简单名片管理系统
Nov 30 Python
用python爬取租房网站信息的代码
Dec 14 Python
Python中logging实例讲解
Jan 17 Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
Jun 10 Python
python发送多人邮件没有展示收件人问题的解决方法
Jun 21 Python
使用celery和Django处理异步任务的流程分析
Feb 19 Python
Python读取VOC中的xml目标框实例
Mar 10 Python
python实现密码强度校验
Mar 18 Python
在Keras中CNN联合LSTM进行分类实例
Jun 29 Python
Python 如何安装Selenium
May 06 Python
python中redis包操作数据库的教程
Apr 19 Python
flask/django 动态查询表结构相同表名不同数据的Model实现方法
Aug 29 #Python
深入了解python中元类的相关知识
Aug 29 #Python
Django shell调试models输出的SQL语句方法
Aug 29 #Python
python实现文件的分割与合并
Aug 29 #Python
Python配置文件处理的方法教程
Aug 29 #Python
浅谈django url请求与数据库连接池的共享问题
Aug 29 #Python
python 进程的几种创建方式详解
Aug 29 #Python
You might like
西德产收音机
2021/03/01 无线电
十天学会php之第四天
2006/10/09 PHP
mysql5写入和读出乱码解决
2006/11/25 PHP
php FLEA中二叉树数组的遍历输出
2012/09/26 PHP
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
2013/02/06 PHP
PHPThumb图片处理实例
2014/05/03 PHP
php使用APC实现实时上传进度条功能
2015/10/26 PHP
PHP全局变量与超级全局变量区别分析
2016/04/01 PHP
Ajax PHP JavaScript MySQL实现简易无刷新在线聊天室
2016/08/17 PHP
php文件包含的几种方式总结
2019/09/19 PHP
fancybox1.3.1 基于Jquery的插件在IE中图片显示问题
2010/10/01 Javascript
原生js拖拽(第一课 未兼容)拖拽思路
2013/03/29 Javascript
location对象的属性和方法应用(解析URL)
2013/04/12 Javascript
Textarea根据内容自适应高度
2013/10/28 Javascript
以JSON形式将JS中Array对象数组传至后台的方法
2014/01/06 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
2014/10/17 Javascript
jQuery+ajax实现实用的点赞插件代码
2016/07/06 Javascript
ajax请求data遇到的问题分析
2018/01/18 Javascript
详解bootstrap-fileinput文件上传控件的亲身实践
2019/03/21 Javascript
JavaScript变量Dom对象的所有属性
2020/04/30 Javascript
Javascript中的奇葩知识,你知道吗?
2021/01/25 Javascript
[01:47]2018年度DOTA2最具人气解说-完美盛典
2018/12/16 DOTA
[47:31]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.12
2020/12/16 DOTA
[01:32:22]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第一场 2月5日
2021/03/11 DOTA
python图像常规操作
2017/11/11 Python
python实现括号匹配的思路详解
2018/08/23 Python
Python定时任务随机时间执行的实现方法
2019/08/14 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
2020/01/08 Python
python解释器pycharm安装及环境变量配置教程图文详解
2020/02/26 Python
浅谈HTML5 服务器推送事件(Server-sent Events)
2017/08/01 HTML / CSS
香港网上花店:FlowerAdvisor香港
2019/05/30 全球购物
幼儿园教师国培感言
2014/02/02 职场文书
秘书英文求职信
2014/04/16 职场文书
作文批改评语大全
2014/04/23 职场文书
加薪申请报告范本
2015/05/15 职场文书
圆明园观后感
2015/06/03 职场文书