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中os和shutil模块实用方法集锦
May 13 Python
python进程类subprocess的一些操作方法例子
Nov 22 Python
进一步理解Python中的函数编程
Apr 13 Python
python实现数组插入新元素的方法
May 22 Python
Python Sql数据库增删改查操作简单封装
Apr 18 Python
200 行python 代码实现 2048 游戏
Jan 12 Python
Python网络爬虫神器PyQuery的基本使用教程
Feb 03 Python
对pandas中Series的map函数详解
Jul 25 Python
Python使用APScheduler实现定时任务过程解析
Sep 11 Python
Jupyter加载文件的实现方法
Apr 14 Python
Python实现仿射密码的思路详解
Apr 23 Python
在Django中自定义filter并在template中的使用详解
May 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
Win2003服务器安全加固设置--进一步提高服务器安全性
2007/05/23 PHP
作为PHP程序员应该了解MongoDB的五件事
2013/06/03 PHP
php中bind_param()函数用法分析
2017/03/28 PHP
PHP简单留言本功能实现代码
2017/06/09 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
PHP数组基本用法与知识点总结
2020/06/02 PHP
JS加jquery简单实现标签元素的显示或隐藏
2013/09/23 Javascript
JS将光标聚焦在文本最后的实现代码
2014/03/28 Javascript
有关jquery与DOM节点操作方法和属性记录
2016/04/15 Javascript
angular route中使用resolve在uglify压缩后问题解决
2016/09/21 Javascript
JS button按钮实现submit按钮提交效果
2016/11/01 Javascript
Vue.2.0.5实现Class 与 Style 绑定的实例
2017/06/20 Javascript
node文件批量重命名的方法示例
2017/10/23 Javascript
React Native自定义控件底部抽屉菜单的示例
2018/02/08 Javascript
vue多次循环操作示例
2019/02/08 Javascript
[43:51]2014 DOTA2国际邀请赛中国区预选赛 Dream Times VS TongFu
2014/05/22 DOTA
Opencv+Python 色彩通道拆分及合并的示例
2018/12/08 Python
使用Python正则表达式操作文本数据的方法
2019/05/14 Python
python能否java成为主流语言吗
2020/06/22 Python
浅析Python 条件控制语句
2020/07/15 Python
python爬虫爬取图片的简单代码
2021/01/18 Python
CSS Grid布局教程之浏览器开启CSS Grid Layout汇总
2014/12/30 HTML / CSS
英国山地公路自行车商店:Tweeks Cycles
2018/03/16 全球购物
英国网上购买门:Direct Doors
2018/06/07 全球购物
纬创Java面试题笔试题
2014/10/02 面试题
物业保安员岗位职责制度
2014/01/30 职场文书
便利店投资创业计划书
2014/02/08 职场文书
历史专业大学生职业生涯规划书
2014/03/13 职场文书
统计学教授推荐信
2014/09/18 职场文书
大学生万能检讨书范例
2014/10/04 职场文书
2015年元旦联欢晚会活动总结
2014/11/28 职场文书
活动总结书怎么写
2015/05/11 职场文书
python 实现的截屏工具
2021/05/08 Python
超详细教你怎么升级Mysql的版本
2021/05/19 MySQL
「睡美人」爱洛公主粘土人开订
2022/03/22 日漫
mysql的Buffer Pool存储及原理
2022/04/02 MySQL