Сериализация модели H2O с рассолом - питон - PullRequest
0 голосов
/ 01 июня 2018

В настоящее время я пытаюсь сериализовать модель g2 h2o в объект pickle и повторно использовать его.Из-за некоторых ограничений я не могу использовать метод по умолчанию или POJO и MOJO, заданные в - http://docs.h2o.ai/h2o/latest-stable/h2o-docs/productionizing.html. Модель подвергается травлению, однако при снятии травления (pickle.loads) возникает следующая ошибка -

__new__() missing 1 required positional argument: 'keyvals'

Код ниже для справки -

import h2o as h2o
import pickle as pickle
from h2o.estimators.gbm import H2OGradientBoostingEstimator
h2o.init()

csv_url = "https://h2o-public-test-data.s3.amazonaws.com/smalldata/wisc/wisc-diag-breast-cancer-shuffled.csv"
data = h2o.import_file(csv_url)
y = 'diagnosis'
x = data.columns
del x[0:1]
train, test = data.split_frame(ratios=[0.75], seed=1)


model = H2OGradientBoostingEstimator(distribution='bernoulli',
                                ntrees=100,
                                max_depth=4,
                                learn_rate=0.1)
model.train(x=x, y=y, training_frame=train, validation_frame=test)

loaded_model = pickle.loads(saved_model)
perf = loaded_model.model_performance(test)
perf.auc()

Я попытался понять модуль рассола и внести некоторые изменения, но он не сработал.Любой обходной путь / помощь будут высоко оценены.Благодарю.

1 Ответ

0 голосов
/ 01 июня 2018

Вам не нужно мариновать его, h2o предоставляет свои собственные методы сохранения: http://docs.h2o.ai/h2o/latest-stable/h2o-docs/save-and-load-model.html

# build the model
model = H2ODeepLearningEstimator(params)
model.train(params)

# save the model
model_path = h2o.save_model(model=model, path="/tmp/mymodel", force=True)

print(model_path)
# outputs: /tmp/mymodel/DeepLearning_model_python_1441838096933

# load the model
saved_model = h2o.load_model(model_path)

, но будьте осторожны, постоянные модели НЕ совместим даже с самыми незначительными изменениями версии, т.е. если вы обучите и сохраните модель в 3.18.0.1, вы не сможете загрузить ее в 3.18.0.2

...