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,如下
#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,如下
(2)题目二:建模如下,之后挑出排名前8的特征进行再次建模
#手动调节参数得到最大准确率 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,如下
#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,如下
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
随机森林是集成学习中可以和梯度提升树GBDT分庭抗礼的算法,尤其是它可以很方便的并行训练,在如今大数据大样本的的时代很有诱惑力。 1. bagging的原理 在集成学习原理小结中,我们给Bagging画了下面一张原理图。 从上图可以看出,Bagging的弱学习器之间的确没有boosting那样的联系。它的特点在“随机采样”。那么什么是随机采样? 随机采样(bootsrap)就是从我们的训练集里面采
在随机森林方法中,创建了大量决策树。 每个观察都被送入每个决策树。 每次观察的最常见结果用作最终输出。 一个新的观察结果被输入所有树木,并对每个分类模型进行多数投票。 对构建树时未使用的情况进行错误估计。 这称为OOB (Out-of-bag)错误估计,以百分比形式提及。 R包"randomForest"用于创建随机森林。 安装R包 在R控制台中使用以下命令安装程序包。 您还必须安装依赖包(如果有
本文向大家介绍python实现随机漫步算法,包括了python实现随机漫步算法的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python实现随机漫步的具体代码,供大家参考,具体内容如下 编写randomwalk类 choice([1,-1])*步数巧妙的完成了随机方向,x轴随机加y轴随机使得4个方向的随机漫步得以完成 显示随机漫步点 以上就是本文的全部内容,希望对大家的学习有所帮助
主要内容:决策树和随机森林,算法应用及其实现,总结随机森林(Random Forest,简称RF)是通过集成学习的思想将多棵树集成的一种算法,它的基本单位是决策树模型,而它的本质属于机器学习的一大分支——集成学习(Ensemble Learning)方法。我们知道,集成学习的实现方法主要分为两大类,即 Bagging 和 boosting 算法,随机森林就是通过【Bagging 算法+决策树算法】实现的。前面已经学习过决策树算法,因此随机森林算法
主要内容:安装R包 - randomForest,语法,示例在随机森林方法中,创建了大量的决策树。每个观察结果都被送入每个决策树。 每个观察结果最常用作最终输出。对所有决策树进行新的观察,并对每个分类模型进行多数投票。 对于在构建树时未使用的情况进行错误估计。 这被称为OOB(Out-of-bag)错误估计,以百分比表示。 R中的软件包用于创建随机林。 安装R包 - randomForest 在R控制台中使用以下命令安装软件包,还必须安装其它依赖软件包(如
1 Bagging Bagging采用自助采样法(bootstrap sampling)采样数据。给定包含m个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时,样本仍可能被选中, 这样,经过m次随机采样操作,我们得到包含m个样本的采样集。 按照此方式,我们可以采样出T个含m个训练样本的采样集,然后基于每个采样集训练出一个基本学习器,再将这些基本学习