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 相关文章推荐
二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
Dec 03 Python
零基础写python爬虫之使用urllib2组件抓取网页内容
Nov 04 Python
python访问系统环境变量的方法
Apr 29 Python
Python进阶-函数默认参数(详解)
May 18 Python
[原创]教女朋友学Python3(二)简单的输入输出及内置函数查看
Nov 30 Python
python thrift搭建服务端和客户端测试程序
Jan 17 Python
python 3.6.2 安装配置方法图文教程
Sep 18 Python
通过cmd进入python的实例操作
Jun 26 Python
django 通过URL访问上传的文件方法
Jul 28 Python
Python简易版停车管理系统
Aug 12 Python
python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
Apr 24 Python
Python使用20行代码实现微信聊天机器人
Jun 05 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
DC动漫人物排行
2020/03/03 欧美动漫
用php过滤危险html代码的函数
2008/07/22 PHP
约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
2010/10/12 PHP
php截取字符串函数分享
2015/02/02 PHP
PHP利用curl发送HTTP请求的实例代码
2020/07/09 PHP
可实现多表单提交的javascript函数
2007/08/01 Javascript
jQuery的学习步骤
2011/02/23 Javascript
js 实现在离开页面时提醒未保存的信息(减少用户重复操作)
2013/01/16 Javascript
深入理解Javascript中的循环优化
2013/11/09 Javascript
jQuery客户端分页实例代码
2013/11/18 Javascript
js+css 实现遮罩居中弹出层(随浏览器窗口滚动条滚动)
2013/12/11 Javascript
一个JavaScript递归实现反转数组字符串的实例
2014/10/14 Javascript
Javascript实现字数统计
2015/07/03 Javascript
html+js+highcharts绘制圆饼图表的简单实例
2016/08/04 Javascript
nodejs+express搭建多人聊天室步骤
2018/02/12 NodeJs
Vue 中使用 CSS Modules优雅方法
2018/04/09 Javascript
使用Vue自定义指令实现Select组件
2018/05/24 Javascript
微信小程序登录换取token的教程
2018/05/31 Javascript
iview在vue-cli3如何按需加载的方法
2018/10/31 Javascript
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
2019/06/18 jQuery
仿照Element-ui实现一个简易的$message方法
2020/09/14 Javascript
[02:16]卖萌的僵尸 DOTA2神话信使飞僵小宝来袭
2014/03/24 DOTA
[45:18]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第一场
2018/04/04 DOTA
Python封装原理与实现方法详解
2018/08/28 Python
Python基于datetime或time模块分别获取当前时间戳的方法实例
2019/02/19 Python
jupyter note 实现将数据保存为word
2020/04/14 Python
keras中的loss、optimizer、metrics用法
2020/06/15 Python
pycharm 实现复制一行的快捷键
2021/01/15 Python
现代家居用品及礼品:LBC Modern
2018/06/24 全球购物
世界上最大的隐形眼镜商店:1-800 Contacts
2018/11/03 全球购物
Regatta官网:英国最受欢迎的户外服装和鞋类品牌
2019/05/01 全球购物
Molly Bracken法国电子商店:法国女性时尚品牌
2019/07/24 全球购物
皮肤科医师岗位职责
2013/12/04 职场文书
自我评价个人范文
2013/12/16 职场文书
美术教学感言
2014/02/22 职场文书
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/06 其他游戏