H2O中的GridSearch API

时间:2016-10-24 21:03:25

标签: java scala machine-learning h2o hyperparameters

我正在尝试使用Scala中的GridSearch api H2O。我找到了this文档,其中显示了在R和Python中要做什么,但Java文档在实际获得最佳模型之前停止了。有人能告诉我最后几行吗? IE给出Grid<MP>我如何获得最佳超参数组合或最佳模型?

修改

以下是我的代码到目前为止的样子(它在Scala中,但显然我在H2O中调用了Java代码)。

private[this] def hyperopt(hyperParams: Map[String, Array[Object]]): M = {
  val search = GridSearch.startGridSearch(
    null,
    params,
    hyperParams.asJava,
    new SimpleParametersBuilderFactory[P],
    new HyperSpaceSearchCriteria.RandomDiscreteValueSearchCriteria)
  val grid = search.get().asInstanceOf[Grid[P]]
  val scoringInfo = grid.getScoringInfos.last // This is best scoringInfo cause it gets sorted along the way
  //val bestParams = scoringInfo.???
  //grid.getModel(bestParams).asInstanceOf[M]
}

关键问题是我不知道如何写最后两行。

所以在经过一番挖掘之后,我想出了一个我不喜欢的解决方案,但它确实有用

private[this] def hyperopt(hyperParams: (Map[String, Array[Object]], String)): M = {
  val search = GridSearch.startGridSearch(
    null,
    params,
    hyperParams._1.asJava,
    new SimpleParametersBuilderFactory[P],
    new HyperSpaceSearchCriteria.RandomDiscreteValueSearchCriteria)
  val grid = search.get()
  val summary = grid.createSummaryTable(grid.getModelKeys, hyperParams._2, true)

  info("Hyper parameter results")
  info(summary.toString)

  // TODO Fix this hack.  I don't know a better way to do this now.
  val bestModelId = summary.get(0, 1)
  grid.getModels.find(m => m._key.toString == bestModelId).get.asInstanceOf[M]
}

1 个答案:

答案 0 :(得分:1)

如果内存服务,Grid grid =(Grid)gs.get(),返回一个完整的网格。现在,最佳模型是什么?如果你说这是最高的ROC,那么按降序排序列表&#34; auc&#34;并选择第一个元素 - 很像this post