H2O Mojo предсказать в R Shiny

Я думаю, что исчерпал весь интернет, ища пример / ответ на мой запрос относительно реализации модели h2o mojo для прогнозирования в RShiny. Мы создали несколько моделей и хотим прогнозировать оценки в интерфейсе RShiny, где пользователи вводят значения. Однако с помощью следующего кода для реализации прогноза мы получаем ошибку

Предупреждение: ошибка в checkForRemoteErrors: 6 узлов выдали ошибки; Первая ошибка: нет метода asJSON S3 класс: H2OFrame

dataInput <- dfName
dataInput <- toJSON(dataInput)

rawPred <- as.data.frame(h2o.predict_json(model= "folder/mojo_model.zip",  json = dataInput, genmodelpath = "folder/h2o-genmodel.jar"))

Может кто-нибудь помочь с некоторыми указателями? Спасибо, Сиобхан

2 ответа

Это не блестящая проблема. Ошибка указывает на то, что вы пытаетесь использовать toJSON() на H2OFrame (вместо R data.frame), который не будет работать, потому что библиотека jsonlite не поддерживает это.

Вместо этого вы можете преобразовать H2OFrame в data.frame, используя:

dataInput <- toJSON(as.data.frame(dataInput))

Я не могу гарантировать, что toJSON() сгенерирует правильный вход для h2o.predict_json() так как я не пробовал это, так что вам придется попробовать это самостоятельно. Обратите внимание, что это может работать только в том случае, если это data-frame из 1 строки, потому что h2o.predict_json() Функция ожидает одну строку данных, закодированную как JSON. Если вы пытаетесь набрать несколько записей, вам придется перебирать строки. Если по какой-то причине toJSON() не дает вам правильный формат, тогда вы можете использовать функцию, которую я написал в этом посте здесь, чтобы вручную создать строку JSON из data.frame.

Есть билет, открытый для создания лучшей версии h2o.predict_json() это будет поддерживать прогнозирование из MOJO для фреймов данных (с несколькими строками) без необходимости предварительного преобразования в JSON. Это позволит вам вообще избежать работы с JSON.

Альтернативой является использование бинарной модели H2O вместо MOJO вместе со стандартным predict() функция. Единственное требование здесь - загрузка модели в кластерную память H2O.

Следующее работает теперь, используя форматирование json из первых двух строк и одинарную кавычку вокруг var с пробелами.

df<- data.frameV1=1,V2=1,CMPNY_EL_IND=1,UW_REGION_NAME = "'LONDON & SE'" )
    dfstr <- sapply(1:ncol(df), function(i) paste(paste0('\"', names(df)[i], '\"'), df[1,i], sep = ':'))
    json <- paste0('{', paste0(dfstr, collapse = ','), '}')
    dataPredict <- as.data.frame(h2o.predict_json(model = "D:\\GBM_model_0_CMP.zip", json = json, genmodelpath = "D:\\h2o-genmodel.jar", labels = TRUE))
Другие вопросы по тегам