我从django模型管理屏幕和pre_save调用h2o获取输入值以对其他值进行预测并保存它们。
目前我通过使用以下方式将我的输入转换为pandas(尝试使用sklearn预处理):
modelH2OFrame = h2o.H2OFrame(python_obj = model_data_frame.to_dict('list'))
它解析并加载。当我一步一步地做它时,它甚至会创建一个带有值的框架。
BUT。当我在Django pre_save中运行它时,H2OFrame完全变回空。
为什么会发生这种情况的想法?有时我会遇到连接到h2o群集或超时的错误 - 这可能是一个相关的问题?我在pre_save调用中加载H2O模型并进行预测,将它们分配给模型字段,然后关闭h2o集群(在一个函数中)。
答案 0 :(得分:2)
似乎Pandas DataFrame到H2OFrame转换在Django之外工作正常,但在Django内部失败。问题可能在于Django的pre_save不允许写入/读取H2O在摄取python对象时创建的临时.csv文件。可能的解决方法是使用model_data_frame.to_csv(<path>, index=False)
将Pandas DataFrame显式写入.csv文件,然后使用h2o.import_file(<path>)
将文件导入H2O。