2017-08-11 62 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建立起从各个参数本摘要。我想直接通过model对象访问这些(以及类似的)参数(对于性能指标,这可以通过model.mse(),model.mae()等)

回答

1

h2o.algo为您提供了模型类型。至于回归或分类,我不知道我的头顶,但它是他们的某个地方。查看流程,因为它更容易看到参数命名他们或做模型。并滚动直到看到看起来可能会有的东西。

+0

我认为你的意思是model.algo,但是,这正是我正在寻找的 – Karl

2

模型类型存储在model.type()

通过在IPython终端中输入model.,然后键入tab键,您可以查看模型的所有方法。它们按字母顺序打印,这是找到您要查找的内容的好方法(即使您不知道确切的方法名称)。您也可以在Python Module documentation中搜索“type”,您也可以找到它。

例子:

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以获得培训指标。如果您已通过验证指标,则可以将valid = True设置为获取验证指标。

如果你想看到的是模型对象,你可以看一下JSON对象如下内:

model.get_params() 
相关问题