Как создать H2OFrame с помощью H2O REST API

Можно ли создать H2OFrame с помощью REST API H2O, и если да, то как?

Моя основная цель — использовать модели, хранящиеся внутри H2O, чтобы делать прогнозы на внешних H2OFrames.

Мне нужно иметь возможность генерировать эти H2OFrames извне из JSON (я полагаю, вызывая конечную точку)

Я прочитал документацию по API, но не нашел четкого объяснения.

Я считаю, что ближайшие конечные точки

/3/CreateFrame, который создает случайные данные и /3/ParseSetup

но я не смог найти надежного учебника.


person Alberto Bonsanto    schedule 21.10.2016    source источник
comment
Можете ли вы объяснить больше о данных, которые вы хотите во фрейме. Это будут случайные данные? Или это реальные данные, которые у вас есть в настоящее время в каком-то формате файла (или в базе данных SQL)?   -  person Darren Cook    schedule 22.10.2016
comment
@Darren_Cook Я хочу создать крошечный фрейм данных, передав json с тем же номером и именами свойств, которые требуются для модели h2o, чтобы предсказать что-то на основе таких функций.   -  person Alberto Bonsanto    schedule 22.10.2016


Ответы (2)


В настоящее время нет конечной точки REST API для прямого преобразования некоторой записи JSON в объект Frame. Таким образом, единственный выход для вас — сначала записать данные в файл CSV, затем загрузить их в h2o с помощью POST /3/PostFile, а затем проанализировать с помощью POST /3/Parse.

(Обратите внимание, что конечная точка POST /3/PostFile отсутствует в документации. Это связано с тем, что это обрабатывается отдельно от других конечных точек. По сути, это конечная точка, которая берет произвольный файл в теле почтового запроса и сохраняет его как "файл необработанных данных". ").

Эту же работу гораздо проще выполнить на Python или R: например, чтобы загрузить какой-то набор данных в h2o для скоринга, вам нужно всего лишь сказать

df = h2o.H2OFrame(plaindata)
person Pasha    schedule 23.10.2016
comment
Re: PostFile не указан в документации. Это просто еще не задокументировано или официально не является частью общедоступного интерфейса (например, так что это может измениться в будущем). - person Darren Cook; 24.10.2016
comment
@DarrenCook Это является частью общедоступного интерфейса, поэтому в будущем он не изменится. Его еще нет в официальной документации, потому что он не соответствует стандартной схеме всех других конечных точек, поэтому для его надлежащего документирования может потребоваться некоторый взлом. - person Pasha; 25.10.2016

Я уже делаю что-то подобное в своем проекте. Поскольку нет конечной точки REST API для прямого преобразования записи JSON в объект Frame. Итак, я делаю следующее: -

1- Для построения модели: сначала перенесите и запишите данные в файл CSV, где работает сервер или кластер h2o. Затем импортируйте данные в h2o с помощью POST/3/ImportFiles, а затем проанализируйте и создайте модель и т. д. Я использую API-интерфейсы h2o-bindings (RESTful API) для него. Поскольку у меня большие данные (от сотен МБ до нескольких ГБ), я использую /3/ImportFiles вместо POST /3/PostFile, так как последний медленно загружает большие данные.

2- Для оценки модели или прогнозирования: - Я использую модель MOJO и POJO. В вашем случае вы используете POST/3/PostFile, как предложил @Pasha, если ваши данные невелики. Но, согласно документации h2o, рекомендуется использовать MOJO или POJO для оценки модели или прогнозирования в производственной среде, а не напрямую вызывать сервер/кластер h2o. MOJO и POJO являются потокобезопасными, поэтому вы можете масштабировать их, используя многопоточность для одновременных запросов.

person Gaurav Gupta    schedule 26.01.2018
comment
Эй, я использую h2o-bindings API для обучения модели. Я использовал h2o.train_gbm(gbmParams); и получил ModelKeyV3 modelKey = (ModelKeyV3)job.dest; Модели ModelsV3 = h2o.model(modelKey); Модель GBMModelV3 = (GBMModelV3)models.models[0]; . Но я не знаю, как преобразовать GBMModelV3 в модель MOJO. Я не нашел никакого метода, который может делать такие вещи. Итак, как я могу получить модель mojo в API h2o-bindings? PS: Я использую Java. - person liyuhui; 05.09.2018