2016-05-04 4 views
6

rstudio、H2Oのフロー、またはh2oのRFとGBMモデルからのローカルhtmlページの木を効率的にプロットする方法を探しています下のリンクを参照してください。 具体的には、おそらくh2o.download_pojo(rf1)やh2o.download_pojo(gbm1)を解析して、以下のコードで生成されたオブジェクト(適合モデル)rf1とgbm2の木をプロットしますか?R:h2o.randomForest()とh2o.gbm()の木をプロットする

http://i.stack.imgur.com/3OWx1.png

# # The following two commands remove any previously installed H2O packages for R. 
# if ("package:h2o" %in% search()) { detach("package:h2o", unload=TRUE) } 
# if ("h2o" %in% rownames(installed.packages())) { remove.packages("h2o") } 

# # Next, we download packages that H2O depends on. 
# pkgs <- c("methods","statmod","stats","graphics","RCurl","jsonlite","tools","utils") 
# for (pkg in pkgs) { 
# if (! (pkg %in% rownames(installed.packages()))) { install.packages(pkg) } 
# } 
# 
# # Now we download, install h2o package 
# install.packages("h2o", type="source", repos=(c("http://h2o-release.s3.amazonaws.com/h2o/rel-turchin/3/R"))) 
library(h2o) 

h2o.init(nthreads = -1, max_mem_size = "2G") 
h2o.removeAll() ##clean slate - just in case the cluster was already running 

## Load data - available to download from link below 
## https://www.dropbox.com/s/gu8e2o0mzlozbu4/SampleData.csv?dl=0 
df <- h2o.importFile(path = normalizePath("../SampleData.csv")) 

splits <- h2o.splitFrame(df, c(0.4, 0.3), seed = 1234) 

train <- h2o.assign(splits[[1]], "train.hex") 
valid <- h2o.assign(splits[[2]], "valid.hex") 
test <- h2o.assign(splits[[2]], "test.hex") 

predictor_col_start_pos <- 2 
predictor_col_end_pos <- 169 
predicted_col_pos <- 1 

rf1 <- h2o.randomForest(training_frame = train, validation_frame = valid, 
         x = predictor_col_start_pos:predictor_col_end_pos, y = predicted_col_pos, 
         model_id = "rf_covType_v1", ntrees = 2000, stopping_rounds = 10, score_each_iteration = T, 
         seed = 2001) 

gbm1 <- h2o.gbm(training_frame = train, validation_frame = valid, x = predictor_col_start_pos:predictor_col_end_pos, 
      y = predicted_col_pos, model_id = "gbm_covType2", seed = 2002, ntrees = 20, 
      learn_rate = 0.2, max_depth = 10, stopping_rounds = 2, stopping_tolerance = 0.01, 
      score_each_iteration = T) 


## Next step would be to plot trees for fitted models rf1 and gbm2 
# print the model, POJO (Plain Old Java Object) to screen 
h2o.download_pojo(rf1) 
h2o.download_pojo(gbm1) 
+0

再現例が提供されています。 – Webby

+0

再現可能な例を追加していただきありがとうございます。これを[SO]に移行することができます。ちょっと待っていればすぐにそこに着くはずです。 – gung

+0

@gungありがとうございます。 – Webby

答えて

4

私はそれはあなたが探している解決策になるかもしれないと思います。今

library(h2o) 
h2o.init() 
df = h2o.importFile("http://s3.amazonaws.com/h2o-public-test-data/smalldata/airlines/allyears2k_headers.zip") 
model = h2o.gbm(model_id = "model", 
      training_frame = df, 
      x = c("Year", "Month", "DayofMonth", "DayOfWeek", "UniqueCarrier"), 
      y = "IsDepDelayed", 
      max_depth = 3, 
      ntrees = 5) 
h2o.download_mojo(model, getwd(), FALSE) 

http://www.h2o.ai/download/から最新の安定H2Oリリースをダウンロードして、コマンドラインからPrintMojoツールを実行します。

java -cp h2o.jar hex.genmodel.tools.PrintMojo --tree 0 -i model.zip -o model.gv 
dot -Tpng model.gv -o model.png 

オープンmodel.png

さらに詳しい情報:http://docs.h2o.ai/h2o/latest-stable/h2o-genmodel/javadoc/index.html

関連する問題