Как я могу встроить H2o в приложение Java? - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь запустить встроенный H2o в приложении Java и обучить модели.Однако я не понимаю, что именно объясняется в документации (http://docs.h2o.ai/h2o/latest-stable/h2o-docs/faq/java.html). Кто-нибудь может мне помочь, предоставив пример?

Спасибо,

1 Ответ

0 голосов
/ 20 мая 2018

Здесь важно понять, действительно ли вы хотите обучить модель в своем приложении или вы просто хотите набрать модель. Большинство людей изначально просто хотят набрать модель.

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")
...
...