H2O Python - 对 GAM 模型进行评分/检索 Z 矩阵

问题描述 投票:0回答:1

我的目标是在 Python 中本地对 GAM 模型进行评分/预测,而无需访问 H2O 集群。训练在 H2O 中进行,并使用薄板。 在文档中,我看到创建了两个矩阵 $Z$ 和 $Z_{CS}$ 来将问题转换为 GLM 模型,但是我找不到检索它的方法。

我尝试过的:

查看有关如何检索这些矩阵的文档;
  • 检查H2O客户端返回的训练模型的Python对象;
  • 检查 H2O 的原始输出
  • model._model_json['output']
  • 
    
  • (显然要在线搜索如何检索此信息)。

虽然我可以根据文档重建 $Z$,但 $Z_{CS}$ 是从随机矩阵构造的。

有谁知道如何从 H2O 中检索这些矩阵?或者,如果我可以在 Python 中本地预测 H2O GAM 模型,我也会得到帮助。

下载 MOJO 并从 Python 调用 Java 代码……并不令人满意:)

具体文档链接:

https://docs.h2o.ai/h2o/latest-stable/h2o-docs/data-science/thin_plate_gam.html#sum-to-zero-constraints-implementation

提前致谢!

python h2o gam
1个回答
0
投票

首先构建您的模型并将其保存为 mojo。假设您的 mojo 保存为目录 /Users/abc/mojodir 中的 GAM_model_python_1707156004691_1.zip。
  1. 您还可以在 /Users/abc/mojodir 中将要预测的数据集保存为 in.csv。
  2. 您的 h2o-3 存储库可以在目录 /Users/abc/h2o-3 中找到。
  3. 您将生成一个列表: java_cmd = ["java", "-ea", "-cp", "/Users/abc/h2o-3/h2o-assemblies/genmodel/build/libs/genmodel.jar", “-Xmx12g”,“-XX:ReservedCodeCacheSize = 256m”,“hex.genmodel.tools.PredictCsv”,“--输入”,“/Users/abc/mojodir/in.csv”,“--输出”,“ /Users/abc/mojodir/out.csv", "--mojo", "/Users/abc/mojodir/GAM_model_python_1707156004691_1.zip", "--decimal"]
  4. 导入python子进程并调用
  5. p = subprocess.Popen(java_cmd, stdout=PIPE, stderr=STDOUT) o, e = p.communicate()

  6. 您将发现存储在 /Users/abc/mojodir/out.csv 中的预测。

如果要将 Z 矩阵保存为 H2O 帧,则使用此参数 _saveZMatrix。但是,它仅用于测试目的,不会向 Python 和 R 客户端公开。您只能通过 Java 访问它。这是 Java 代码片段:

train = massageFrame(train, family); GAMModel.GAMParameters params = new GAMModel.GAMParameters(); params._response_column = responseColumn; params._bs = bstypes; params._num_knots = numKnots; params._gam_columns = gamCols; params._train = train._key; params._saveZMatrix = true; params._solver = GLMModel.GLMParameters.Solver.IRLSM; GAMModel gam = new GAM(params).trainModel().get(); double[][][] zmat = gam._output._zTransposeCS;

z 矩阵保存在 zTransposeCS 中(对于薄板样条)。

© www.soinside.com 2019 - 2024. All rights reserved.