首页 文章

从H2O模型对象获取模型详细信息

提问于
浏览
2

我有一个相当简单的问题,但无法在任何地方找到记录在案的解决方案 .

我目前正在构建一个使用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 根据各个参数 Build 了这个摘要 . 我想直接通过 model 对象访问这些(和类似的)参数(对于性能指标,可以通过 model.mse()model.mae() 等)

4 回答

  • 2

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

  • 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))
    

    注意:因为我没有通过验证框架,这就是为什么我设置valid = False以获得培训指标 . 如果您已通过验证指标,则可以设置valid = True以获取验证指标 .

    如果要查看模型对象内部的内容,可以查看json对象,如下所示:

    model.get_params()
    
  • 2

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

    您可以通过键入 model. 然后在IPython终端中键入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'
    
  • 1

    (这是关于问题 Headers 的主题,所以我认为值得在这里指出 . 但它有点偏离实际问题的主题,它指的是H2O二进制模型,而不是POJO和MOJO模型 . )

    对于H2O POJO和MOJO模型,使用的方法是getModelCategory() .

    http://docs.h2o.ai/h2o/latest-stable/h2o-genmodel/javadoc/hex/genmodel/easy/EasyPredictModelWrapper.html#getModelCategory()

相关问题