我的目标是在 Python 中本地对 GAM 模型进行评分/预测,而无需访问 H2O 集群。训练在 H2O 中进行,并使用薄板。 在文档中,我看到创建了两个矩阵 $Z$ 和 $Z_{CS}$ 来将问题转换为 GLM 模型,但是我找不到检索它的方法。
我尝试过的:
查看有关如何检索这些矩阵的文档;
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
首先构建您的模型并将其保存为 mojo。假设您的 mojo 保存为目录 /Users/abc/mojodir 中的 GAM_model_python_1707156004691_1.zip。
如果要将 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 中(对于薄板样条)。