Sometimes you may want to store the H2O model object as text to local file system. In this example I will show you how you can save H2O model object to local disk as simple text content. You can get full working jupyter notebook for this example here from my Github.
Based on my experience the following example works fine with python 2.7.12 and python 3.4. I also found that the H2O model object tables were not saved to text file from jupyter notebook however when I ran the same code form command line into python shell, all the content was written perfectly.
Lets build an H2O GBM model using the public PROSTATE dataset (The following script is full working script which will generate the GBM binomial model):
import h2o h2o.init() local_url = "https://raw.githubusercontent.com/h2oai/sparkling-water/master/examples/smalldata/prostate.csv" df = h2o.import_file(local_url) y = "CAPSULE" feature_names = df.col_names feature_names.remove(y) df[y] = df[y].asfactor() df_train, df_valid = df.split_frame(ratios=[0.9]) print(df_train.shape) print(df_valid.shape) prostate_gbm = H2OGradientBoostingEstimator(model_id = "prostate_gbm", ntrees=1000, learn_rate=0.5, max_depth=20, stopping_tolerance=0.001, stopping_rounds=2, score_each_iteration=True) prostate_gbm.train(x = feature_names, y = y, training_frame=df_train, validation_frame=df_valid) prostate_gbm
Now we will save the model details to the disk as below:
old_target = sys.stdout f = open('/Users/avkashchauhan/Downloads/model_output.txt', 'w') sys.stdout = f
Lets see the content of the local file we have just created in the above step (It is empty):
Now we will launch the following commands which will fill the standard output buffer with the model details as text:
print("Model summary>>> model_object.show()") prostate_gbm.show()
Now we will push the standard output buffer to the text file which is created locally:
sys.stdout = old_target
Now we will check back the local file contents and this time you will see that the output of above command is written into the file:
You will see the command output stored into the local text file as below:
Model summary>>> model_object.show() Model Details ============= H2OGradientBoostingEstimator : Gradient Boosting Machine Model Key: prostate_gbm ModelMetricsBinomial: gbm ** Reported on train data. ** MSE: 0.036289343297 RMSE: 0.190497620187 LogLoss: 0.170007804527 Mean Per-Class Error: 0.0160045361428 AUC: 0.998865964296 Gini: 0.997731928592 Confusion Matrix (Act/Pred) for max f1 @ threshold = 0.487417363665: Maximum Metrics: Maximum metrics at their respective thresholds Gains/Lift Table: Avg response rate: 40.36 % ModelMetricsBinomial: gbm ** Reported on validation data. ** MSE: 0.161786079676 RMSE: 0.402226403505 LogLoss: 0.483923658542 Mean Per-Class Error: 0.174208144796 AUC: 0.871040723982 Gini: 0.742081447964 Confusion Matrix (Act/Pred) for max f1 @ threshold = 0.205076283533: Maximum Metrics: Maximum metrics at their respective thresholds Gains/Lift Table: Avg response rate: 39.53 % Scoring History: Variable Importances:
Note: If you are thinking what “!” sign does here, so it is used here to run a linux shell command (in this case “cat” is the linux command) inside jupyter cell.
Thats it, enjoy!!