gpt4 book ai didi

java - 直接从 Java 保存 H2O 模型

转载 作者:行者123 更新时间:2023-11-30 02:31:04 24 4
gpt4 key购买 nike

我正在尝试直接从 Java 创建并保存生成的模型。 documentation指定如何在 R 和 Python 中执行此操作,但不在 Java 中执行此操作。类似question之前被问过,但没有提供真正的答案(除了链接到 H2O 文档,该文档不包含代码示例)。

对于我当前的目的来说,获得一些能够将以下引用代码转换为 Java 的指针就足够了。我主要寻找有关从 Maven repository 导入的相关 JAR 的指导。

import h2o
h2o.init()
path = h2o.system_file("prostate.csv")
h2o_df = h2o.import_file(path)
h2o_df['CAPSULE'] = h2o_df['CAPSULE'].asfactor()
model = h2o.glm(y = "CAPSULE",
x = ["AGE", "RACE", "PSA", "GLEASON"],
training_frame = h2o_df,
family = "binomial")
h2o.download_pojo(model)

最佳答案

我想我已经找到了问题的答案。下面是一个独立的示例代码。但是,我仍然感谢社区的回答,因为我不知道这是否是最好/惯用的方法。

package org.name.company;

import hex.glm.GLMModel;
import water.H2O;
import water.Key;
import water.api.StreamWriter;
import water.api.StreamingSchema;
import water.fvec.Frame;
import water.fvec.NFSFileVec;
import hex.glm.GLMModel.GLMParameters.Family;
import hex.glm.GLMModel.GLMParameters;
import hex.glm.GLM;
import water.util.JCodeGen;

import java.io.*;
import java.util.Map;

public class Launcher
{
public static void initCloud(){
String[] args = new String [] {"-name", "h2o_test_cloud"};
H2O.main(args);
H2O.waitForCloudSize(1, 10 * 1000);
}

public static void main( String[] args ) throws Exception {
// Initialize the cloud
initCloud();

// Create a Frame object from CSV
File f = new File("/path/to/data.csv");
NFSFileVec nfs = NFSFileVec.make(f);
Key frameKey = Key.make("frameKey");
Frame fr = water.parser.ParseDataset.parse(frameKey, nfs._key);

// Create a GLM and output coefficients
Key modelKey = Key.make("modelKey");
try {
GLMParameters params = new GLMParameters();
params._train = frameKey;
params._response_column = fr.names()[1];
params._intercept = true;
params._lambda = new double[]{0};
params._family = Family.gaussian;

GLMModel model = new GLM(params).trainModel().get();
Map<String, Double> coefs = model.coefficients();
for(Map.Entry<String, Double> entry : coefs.entrySet()) {
System.out.format("%s: %f\n", entry.getKey(), entry.getValue());
}

String filename = JCodeGen.toJavaId(model._key.toString()) + ".java";
StreamingSchema ss = new StreamingSchema(model.new JavaModelStreamWriter(false), filename);
StreamWriter sw = ss.getStreamWriter();
OutputStream os = new FileOutputStream("/base/path/" + filename);
sw.writeTo(os);

} finally {
if (fr != null) {
fr.remove();
}
}
}
}

关于java - 直接从 Java 保存 H2O 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44268964/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com