一、 环境依赖
1.安装java环境
mac :
brew install java
sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
echo 'export PATH="/opt/homebrew/opt/openjdk/bin:$PATH"' >> ~/.zshrc
java 8,11 比较稳定,支持安装,19以及新版本目前不支持
2.h2o 安装
源码安装:
需要注意的是java已经安装正常且启动无异常
git clone https://github.com/h2oai/h2o-3.git
cd h2o-3
/gradlew syncSmalldata
h2o flow 服务安装
https://docs.h2o.ai/h2o/latest-stable/h2o-docs/flow.html#using-flow
3.下载并启动flow服务
https://h2o-release.s3.amazonaws.com/h2o/rel-zz_kurka/2/index.html
cd ~/Downloads
unzip h2o-3.38.0.2.zip
cd h2o-3.38.0.2
java -jar h2o.jar
java 服务启动成功
二、 H2O flow
适用于数据分析师,用户可以进行面板操作,不需要任何代码基础,就可以训练模型,选择最优的算法,参数及模型
上传数据集,可以对数据进行切分,缺失值处理。
训练模型,可以单个指定模型,也可以使用AutoML训练
定义数据集及标签
可选择的AutoMl 的模型
默认训练时间一个小时比较久,设置时间上限
训练结果,不同参数,不同算法模型评估
可将某个单一模型下载导出,模型结果以jar文件格式存储,还需要继续用h2o软件进行导入才能预测
三、H2o 代码示例
python 接口文档
https://docs.h2o.ai/h2o/latest-stable/h2o-py/docs/intro.html
单个模型训练
from h2o.tree import H2OTree
from h2o.estimators import H2OGradientBoostingEstimator
airlines = h2o.import_file("https://s3.amazonaws.com/h2o-public-test-data/smalldata/airlines/AirlinesTrain.csv")
gbm = H2OGradientBoostingEstimator(ntrees=1)
gbm.train(x=["Origin", "Dest"],
y="IsDepDelayed",
training_frame=airlines)
# Obtaining a tree is a matter of a single call
tree = H2OTree(model = gbm, tree_number = 0 , tree_class = "NO")
tree.model_id
tree.tree_number
tree.tree_class
automl python 代码示例
from h2o.automl import H2OAutoML
import h2o
import pandas as pd
h2o.init()
# pandas导入方式
train = pd.read_csv('/Users/tianjian/Projects/python-BasicUsage/算法/data/my_data_guest.csv')
test = pd.read_csv('/Users/tianjian/Projects/python-BasicUsage/算法/data/my_data_guest.csv')
hf = h2o.H2OFrame(train)
test_hf = h2o.H2OFrame(test)
hf.head()
# 选择预测变量和目标
hf['bad'] = hf['bad'].asfactor()
predictors = hf.drop('bad').columns
response = 'bad'
# 切分数据集,添加停止条件参数为最大模型数和最大时间,然后训练
train_hf, valid_hf = hf.split_frame(ratios=[.8], seed=1234)
aml = H2OAutoML(
max_models=20,
max_runtime_secs=300,
seed=1234,
)
aml.train(x=predictors,
y=response,
training_frame=hf,
)
连接集群服务,并开始自动化训练
H2O Flow也会记录训练job,可以查看数据集,训练的模型及效果
四、结论
优点
-
支持大数据量训练,spark,hadoop 有稳定的接口支持
-
h2o flow 提供集群训练服务,分布式节点训练模式
-
适合数据分析师,通过页面点击可以完成建模并调参,自动化训练
缺点
-
环境依赖java,和spark,hadoop 紧耦合,需要flow集群服务监控调度
-
算法和用法比较固定,现有框架集成的算法,无法扩展
-
整体框架比较重,集成实用性不高