Здесь важно понять, действительно ли вы хотите обучить модель в своем приложении или вы просто хотите набрать модель. Большинство людей изначально просто хотят набрать модель.
SCORING
Подсчет очков прост и естественен. См. MOJO и POJO javadoc api здесь:
Следуйте шаблону, показанному в javadoc, чтобы использовать Easy API. Ниже приведен фрагмент соответствующего кода:
EasyPredictModelWrapper model = new EasyPredictModelWrapper(MojoModel.load("GBM_model.zip"));
RowData row = new RowData();
row.put("AGE", "68");
...
BinomialModelPrediction p = model.predictBinomial(row);
ОЦЕНКА И СОХРАНЕНИЕ ДЛЯ ОТПРАВЛЕННОГО ОБУЧЕНИЯ
То, что многие люди будут делать, это набирать в своих приложениях в реальном времени, а также сохранять новые данные (где-то) для отложенного обучения. Затем обучите модели в автономном режиме и снова отправьте их в производство для оценки. Это довольно типичный жизненный цикл модели, который прост для понимания и управления.
TRAINING
Более сложным является встраивание H2O в ваше приложение для реального обучения.
Если бы я собирался встроить H2O, я бы сделал это одним из двух способов:
Хорошо поддерживается вариант 1 . Запустите экземпляр H2O как отдельный процесс (или набор процессов в распределенном случае) и обменивайтесь данными с ним с помощью R или Python.
Хорошо документированными API для H2O являются R API и Python API. (Существует также REST API с большим количеством сгенерированной документации, но я бы не стал считать это особенно простым в использовании.)
Вы найдете много документации и примеров по адресу:
Хорошо поддерживаемый вариант 2 . Напишите приложение Spark и используйте Sparkling Water и Scala или PySparkling and Python.
На самом деле для этого не нужно много Spark, поскольку встроенная H2O в Sparkling Water на самом деле совсем не зависит от Spark. Scala и Python API для Sparkling Water хорошо документированы. Руководство пользователя Sparkling Water - хорошее место для этого:
... А вот и другие варианты, которые сложнее:
(Сложнее) Вариант 3 . Вы можете включить H2O как зависимость maven и вызывать ее напрямую из Java.
Самая большая проблема здесь в том, что Java API недостаточно хорошо документирован, и вы не найдете дружественных примеров того, как его использовать. Лучшая документация по Java API - это сам исходный код и модульные тесты (поиск по каталогам 'test') внутри github проекта h2o-3:
(Сложнее) Вариант 4 . Некоторые люди вызывают H2O напрямую из REST API.
Я бы не рекомендовал это, потому что это сложно, но если вы хотите попробовать, лучший способ узнать, как использовать REST API, - это включить ведение журнала из R и посмотреть полезные нагрузки сообщений между R-клиентом и H2O :
# R program.
h2o.init()
h2o.startLogging()
h2o.importFile("test.csv")
...