将“h2o_model.accuracy”打印输出保存到文件
Saving `h2o_model.accuracy` printed output to a file
h2o_model.accuracy
在 Jupyter Notebook 单元格中执行时打印模型验证数据(这是可取的,尽管有函数名称)。如何将整个验证输出(整个笔记本单元格内容)保存到文件中?请在建议重定向之前进行测试。
您应该调用 h2o_model.accuracy()
(注意括号)。打印整个模型的原因是 __repl__
在 h2o 模型中的非惯用实现,它打印而不是返回一个字符串(有一个 JIRA 可以解决这个问题)。
如果您遇到其他情况需要保存某些命令的打印输出,您可以使用 redirect_stdout
[1] 来捕获它(假设您有 python 3.4+)。
[1] https://docs.python.org/3.9/library/contextlib.html#contextlib.redirect_stdout
好的,所以只有 h2o_model.accuracy
输出无法被捕获,而 xgb_model.cross_validation_metrics_summary
甚至 h2o_model
可以单独捕获 - 例如像那样:
%%capture captured_output
# print model validation
# data to `captured_output`
xgb_model
在另一个笔记本单元格中:
# print(captured_output.stdout.replace("\n\n","\n"))
with open(filename, 'w') as f:
f.write((captured_output.stdout.replace("\n\n","\n")))
我会小心使用 %%capture
,它不会捕获 stdout
.
中的 html 内容(表格)
redirect_stdout
在 python CLI/script 中使用时完美无缺。 IPython/Jupyter 可能会导致表格出现问题,因为它们是 display
ed 而不是 print
ed。请注意,您不应使用 .readlines()
从 StringIO
获取结果 - 使用 .getvalue()
.
您可以使用 h2o_model.save_model_details(path)
将有关模型的信息保存到 json 文件中(这可能会在较长的 运行 中为您提供更好的服务,但它不是真正的人类可读的)。
如果您真的希望输出看起来像从 Jupyter notebook 中获得的输出,您可以使用以下 hack:
- 创建一个包含以下内容的模板 jupyter 笔记本:
import os
import h2o
h2o.connect(verbose=False)
h2o.get_model(os.environ["H2O_MODEL"])
- 并在您原来的笔记本中添加
!H2O_MODEL={h2o_model.key} jupyter nbconvert --to html --execute template.ipynb --output={h2o_model.key}_results.html
您还可以为 nbconvert
创建一个模板来隐藏代码单元格。
h2o_model.accuracy
在 Jupyter Notebook 单元格中执行时打印模型验证数据(这是可取的,尽管有函数名称)。如何将整个验证输出(整个笔记本单元格内容)保存到文件中?请在建议重定向之前进行测试。
您应该调用 h2o_model.accuracy()
(注意括号)。打印整个模型的原因是 __repl__
在 h2o 模型中的非惯用实现,它打印而不是返回一个字符串(有一个 JIRA 可以解决这个问题)。
如果您遇到其他情况需要保存某些命令的打印输出,您可以使用 redirect_stdout
[1] 来捕获它(假设您有 python 3.4+)。
[1] https://docs.python.org/3.9/library/contextlib.html#contextlib.redirect_stdout
好的,所以只有 h2o_model.accuracy
输出无法被捕获,而 xgb_model.cross_validation_metrics_summary
甚至 h2o_model
可以单独捕获 - 例如像那样:
%%capture captured_output
# print model validation
# data to `captured_output`
xgb_model
在另一个笔记本单元格中:
# print(captured_output.stdout.replace("\n\n","\n"))
with open(filename, 'w') as f:
f.write((captured_output.stdout.replace("\n\n","\n")))
我会小心使用 %%capture
,它不会捕获 stdout
.
redirect_stdout
在 python CLI/script 中使用时完美无缺。 IPython/Jupyter 可能会导致表格出现问题,因为它们是 display
ed 而不是 print
ed。请注意,您不应使用 .readlines()
从 StringIO
获取结果 - 使用 .getvalue()
.
您可以使用 h2o_model.save_model_details(path)
将有关模型的信息保存到 json 文件中(这可能会在较长的 运行 中为您提供更好的服务,但它不是真正的人类可读的)。
如果您真的希望输出看起来像从 Jupyter notebook 中获得的输出,您可以使用以下 hack:
- 创建一个包含以下内容的模板 jupyter 笔记本:
import os
import h2o
h2o.connect(verbose=False)
h2o.get_model(os.environ["H2O_MODEL"])
- 并在您原来的笔记本中添加
!H2O_MODEL={h2o_model.key} jupyter nbconvert --to html --execute template.ipynb --output={h2o_model.key}_results.html
您还可以为 nbconvert
创建一个模板来隐藏代码单元格。