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判断Abundant Number的方法
Jun 15 Python
Python 专题三 字符串的基础知识
Mar 19 Python
python使用mysql数据库示例代码
May 21 Python
Python简单计算数组元素平均值的方法示例
Dec 26 Python
解决nohup重定向python输出到文件不成功的问题
May 11 Python
Python从Excel中读取日期一列的方法
Nov 28 Python
Python列表切片操作实例总结
Feb 19 Python
python图像处理入门(一)
Apr 04 Python
python 反编译exe文件为py文件的实例代码
Jun 27 Python
利用Python库Scapy解析pcap文件的方法
Jul 23 Python
Python三元运算与lambda表达式实例解析
Nov 30 Python
python实现UDP协议下的文件传输
Mar 20 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
php 中文处理函数集合
2008/08/27 PHP
php实现读取内存顺序号
2015/03/29 PHP
[原创]PHP实现逐行删除文件右侧空格的方法
2015/12/25 PHP
php执行多个存储过程的方法【基于thinkPHP】
2016/11/08 PHP
php可变长参数处理函数详解
2017/02/22 PHP
javascript语句中的CDATA标签的意义
2007/05/09 Javascript
FF IE兼容性的修改小结
2009/09/02 Javascript
(function($){...})(jQuery)的意思
2010/07/22 Javascript
node.js中的fs.chownSync方法使用说明
2014/12/16 Javascript
js实现图片从左往右渐变切换效果的方法
2015/02/06 Javascript
JavaScript实现MIPS乘法模拟的方法
2015/04/17 Javascript
JavaScript中this详解
2015/09/01 Javascript
vue内置组件transition简单原理图文详解(小结)
2018/07/12 Javascript
在angularJs中进行数据遍历的2种方法
2018/10/08 Javascript
javascript canvas API内容整理
2020/02/16 Javascript
用vue 实现手机触屏滑动功能
2020/05/28 Javascript
解决vue+webpack项目接口跨域出现的问题
2020/08/10 Javascript
JS面向对象实现飞机大战
2020/08/26 Javascript
nuxt.js添加环境变量,区分项目打包环境操作
2020/11/06 Javascript
利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程
2015/05/05 Python
Python中有趣在__call__函数
2015/06/21 Python
python多线程调用exit无法退出的解决方法
2019/02/18 Python
Python学习笔记之文件的读写操作实例分析
2019/08/07 Python
初次部署django+gunicorn+nginx的方法步骤
2019/09/11 Python
python函数不定长参数使用方法解析
2019/12/14 Python
Python SMTP配置参数并发送邮件
2020/06/16 Python
html5+css3进度条倒计时动画特效代码【推荐】
2016/03/08 HTML / CSS
马来西亚在线购物市场:PGMall.my
2019/10/13 全球购物
马云北大演讲完整版:真心话,什么才是阿里的核心竞争力?
2014/04/04 职场文书
股份合作协议书
2014/09/10 职场文书
弘扬焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
地心历险记观后感
2015/06/15 职场文书
借钱欠条怎么写
2015/07/03 职场文书
《夹竹桃》教学反思
2016/02/23 职场文书
2016年优秀班主任先进事迹材料
2016/02/26 职场文书
小喇叭开始广播了! 四十多年前珍贵老照片
2022/05/09 无线电