我从django模型管理屏幕中获取输入值,并在pre_save上调用h2o来预测其他值并保存它们。
目前,我使用转换Panda的输入(尝试在这里轻松地使用sklearn预处理)
modelH2OFrame = h2o.H2OFrame(python_obj = model_data_frame.to_dict('list'))
它解析并加载。见鬼,当我一步一步地做的时候,它甚至会创建一个有值的框架。
但是。当我在Django pre_save内部运行这个程序时,H2OFrame返回时完全为空。
为什么会发生这种情况?有时我会在连接到h2o集群时出错或超时——也许这是一个相关的问题?我在pre_save调用中加载H2O模型并进行预测,将它们分配到模型字段,然后关闭H2O集群(在一个函数中)。
似乎Pandas DataFrame到H2OFrame的转换在Django外部运行良好,但在Djano内部失败。问题可能是Django的pre_save不允许写入/读取H2O在获取python对象时创建的临时.csv文件。一种可能的解决方法是使用model_data_frame.to_csv(<path>, index=False)
将Pandas DataFrame显式写入.csv文件,然后使用h2o.import_file(<path>)
将该文件导入H2O。