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类型强制转换long to int的代码
Feb 10 Python
TensorFlow神经网络优化策略学习
Mar 09 Python
python selenium 对浏览器标签页进行关闭和切换的方法
May 21 Python
Python3使用turtle绘制超立方体图形示例
Jun 19 Python
django 自定义filter 判断if var in list的例子
Aug 20 Python
Django模板语言 Tags使用详解
Sep 09 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
Feb 12 Python
Python可变对象与不可变对象原理解析
Feb 25 Python
Pytorch数据拼接与拆分操作实现图解
Apr 30 Python
Pytest之测试命名规则的使用
Apr 16 Python
python实现进度条的多种实现
Apr 29 Python
Django实现聊天机器人
May 31 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
解决File size limit exceeded 错误的方法
2013/06/14 PHP
解析PHP中intval()等int转换时的意外异常情况
2013/06/21 PHP
php显示指定目录下子目录的方法
2015/03/20 PHP
php使用PDO获取结果集的方法
2017/02/16 PHP
php图片裁剪函数
2018/10/31 PHP
jQuery JSON的解析方式分享
2011/04/05 Javascript
jquery实现的可隐藏重现的靠边悬浮层实例代码
2013/05/27 Javascript
jquery退出each循环的写法
2014/02/26 Javascript
kindeditor修复会替换script内容的问题
2015/04/03 Javascript
javascript显式类型转换实例分析
2015/04/25 Javascript
微信小程序 LOL 英雄介绍开发实例
2016/09/30 Javascript
easyui关于validatebox实现多重规则验证的方法(必看)
2017/04/12 Javascript
Vue兼容ie9的问题全面解决方案
2018/06/19 Javascript
微信小程序scroll-view横向滑动嵌套for循环的示例代码
2018/09/20 Javascript
layui清除radio的选中状态实例
2019/11/14 Javascript
JavaScript实现网页留言板功能
2020/11/23 Javascript
[01:32:10]NAVI vs VG Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
Python实现的数据结构与算法之基本搜索详解
2015/04/22 Python
Python编程实现二叉树及七种遍历方法详解
2017/06/02 Python
详解python实现识别手写MNIST数字集的程序
2018/08/03 Python
Django实现CAS+OAuth2的方法示例
2019/10/30 Python
Python 操作 PostgreSQL 数据库示例【连接、增删改查等】
2020/04/21 Python
KIKO比利时官网:意大利彩妆品牌
2017/07/23 全球购物
加拿大时尚潮流大码女装购物网站:Addition Elle
2018/04/02 全球购物
雷曼兄弟的五金店:Lehman’s Hardware Store
2019/04/10 全球购物
西班牙购买行李箱和背包网站:Maletas Greenwich
2019/10/08 全球购物
个人对照检查材料
2014/02/12 职场文书
数控专业自荐书范文
2014/03/16 职场文书
幼儿园中班开学寄语
2014/04/03 职场文书
车辆转让协议书
2014/04/15 职场文书
食品流通安全承诺书
2014/05/22 职场文书
卫校毕业生自我鉴定
2014/09/28 职场文书
政府个人对照检查材料思想汇报
2014/10/08 职场文书
刑事和解协议书范本
2014/11/19 职场文书
2016简单的租房合同范本
2016/03/18 职场文书
导游词之介休绵山
2019/12/31 职场文书