2017-08-11 17 views
2

私はかなり簡単な質問がありますが、ドキュメント化されたソリューションはどこにも見つかりませんでした。H2Oモデルオブジェクトからモデルの詳細を取得

私は現在、H2Oモデルのパイプラインを構築しています。プロセスの一部として、各訓練モデルの基本情報をテーブルに書き込む必要があります。

のは、私のようなものがあるとしましょう:これをやった後

model = H2ODeepLearningEstimator(...) 
model.train(...) 

を、私はmodelオブジェクトからモデルのタイプを引っ張って欲しいです。すなわち、私のようなものを探しています:その文字列を返します

model.getType() 

"H2ODeepLearningEstimator"または同等"deeplearning" H2Oは、モデルタイプ識別子として内部的に使用するように思われます。私はまた、それが回帰モデルであるか分類モデルであるかなどの他の詳細を知りたい。この情報が公開されているパラメータは表示されません。

私は例えばmodel.save_model_detailsを実行する場合、私が取得:

H2ODeepLearningEstimator : Deep Learning 
Model Key: Grid_DeepLearning_py_4_sid_a02a_model_python_1502450758585_2_model_0 


ModelMetricsRegression: deeplearning 
** Reported on train data. ** 

MSE: 19.5334650304 
RMSE: 4.4196679774 
MAE: 1.44489752843 
RMSLE: NaN 
Mean Residual Deviance: 19.5334650304 

ModelMetricsRegression: deeplearning 
** Reported on validation data. ** 
... 
... 

おそらくmodel.save_model_detailsは、個々のパラメータから、この要約を構築。私は

答えて

1

h2o.algoはあなたのモデルタイプを提供します(、model.mse()経由でこれが可能なパフォーマンスメトリックのmodel.mae()など)modelオブジェクトを介して直接これらの(および類似の)パラメータにアクセスしたいと思います。回帰や分類については、私は頭の上を知ることはできませんが、それはどこかにあります。パラメータ名の表示やモデルの見やすさがわかりやすいので、フローを見てください。それがあるかもしれないように見える何かが見えるまでスクロールします。

+0

を参照してください。 – Karl

2

モデルタイプはmodel.type()に格納されています。

モデルのすべてのメソッドを表示するには、model.と入力してから、IPythonターミナルのタブキーをクリックします。彼らはアルファベット順に印刷されています。あなたが探しているものを見つける良い方法です(正確なメソッド名がわからなくても)。 Python Module documentationで「タイプ」を検索することもできます。この方法でも同様に検索されます。

例:

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

# Import a sample binary outcome train/test set into H2O 
train = h2o.import_file("https://s3.amazonaws.com/erin-data/higgs/higgs_train_10k.csv") 
test = h2o.import_file("https://s3.amazonaws.com/erin-data/higgs/higgs_test_5k.csv") 

# Identify predictors and response 
x = train.columns 
y = "response" 
x.remove(y) 

# For binary classification, response should be a factor 
train[y] = train[y].asfactor() 
test[y] = test[y].asfactor() 

# Train a GBM 
model = H2OGradientBoostingEstimator(distribution="bernoulli", seed=1) 
model.train(x=x, y=y, training_frame=train) 

チェックモデルタイプ:

In [3]: model.type 
Out[3]: u'classifier' 
0

あなたは、トレーニングおよび/または検証データに基づいてモデルの個々のモデルメトリックの一部を取得することができます。ここでは、コードスニペットは、次のとおりです。

import h2o 
h2o.init(strict_version_check= False , port = 54345) 
from h2o.estimators.deeplearning import H2ODeepLearningEstimator 
model = H2ODeepLearningEstimator() 
rows = [[1,2,3,4,0], [2,1,2,4,1], [2,1,4,2,1], [0,1,2,34,1], [2,3,4,1,0]] * 50 
fr = h2o.H2OFrame(rows) 
X = fr.col_names[0:4] 

## Classification Model 
fr[4] = fr[4].asfactor() 
model.train(x=X, y="C5", training_frame=fr) 
print('Model Type:', model.type) 
print('logloss', model.logloss(valid = False)) 
print('Accuracy', model.accuracy(valid = False)) 
print('AUC', model.auc(valid = False)) 
print('R2', model.r2(valid = False)) 
print('RMSE', model.rmse(valid = False)) 
print('Error', model.error(valid = False)) 
print('MCC', model.mcc(valid = False)) 

## Regression Model 
fr = h2o.H2OFrame(rows) 
model.train(x=X, y="C5", training_frame=fr) 
print('Model Type:', model.type) 
print('R2', model.r2(valid = False)) 
print('RMSE', model.rmse(valid = False)) 

注:私はトレーニングの指標を得るために= Falseを有効に設定なぜ私が検証フレームに合格しなかったようthatsの。検証メトリックに合格した場合は、valid = Trueを設定して検証メトリックを取得することもできます。

model.get_params() 
0

(私はそれがここで指摘する価値だと思うので、これは質問のタイトルのトピックにある:

あなたが以下のようにJSONオブジェクトを見ることができるモデルオブジェクト内にあるかを確認したい場合は

。しかし実際の質問の話題は、POJOやMOJOモデルではなく、H2Oバイナリモデルを指しています。)H2O POJOとMOJOモデルの場合、使用するメソッドはgetModelCategory()です。

私はあなたがmodel.algoを意味だと思いますが、はい、これは私が探しています正確に何であるhttp://docs.h2o.ai/h2o/latest-stable/h2o-genmodel/javadoc/hex/genmodel/easy/EasyPredictModelWrapper.html#getModelCategory()

関連する問題