0

H2OGridSearchの Scala 内で APIを使用しようとしています。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]
}

重要な問題は、最後の 2 行の書き方がわからないことです。

だから、掘り下げた後、私は好きではないこの解決策を思いついたが、それはうまくいく

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]
}
4

1 に答える 1

1

メモリが機能する場合、Grid grid = (Grid) gs.get() は完全なグリッドを返します。では、何が最良のモデルを構成するのでしょうか? それが最高の ROC であると言う場合は、リストを "auc" の降順で並べ替え、最初の要素を選択します (この投稿のように) 。

于 2016-10-24T21:26:46.907 に答える