【发布时间】:2020-07-30 09:47:37
【问题描述】:
我想序列化经过训练的 scikit 管道对象以重新加载它以进行预测。我看到的 pickle 和 joblib dump 是两种常用的方法,而 joblib 是更可取的方法。
在我的情况下,我想将序列化的 python 对象存储在数据库中并从那里加载它,反序列化它并将其用于预测。是否可以在没有任何文件系统访问权限的情况下序列化对象?
【问题讨论】:
标签: python serialization pickle joblib
我想序列化经过训练的 scikit 管道对象以重新加载它以进行预测。我看到的 pickle 和 joblib dump 是两种常用的方法,而 joblib 是更可取的方法。
在我的情况下,我想将序列化的 python 对象存储在数据库中并从那里加载它,反序列化它并将其用于预测。是否可以在没有任何文件系统访问权限的情况下序列化对象?
【问题讨论】:
标签: python serialization pickle joblib
是的,对于 pickle 库,您可以使用 pickle.dumps 而不是 pickle.dump 来获取对象的序列化版本。
serialized_object = pickle.dumps(object)
这会返回一个bytes 对象,然后您应该能够将其存储在您的数据库中,在这样做之前可能会将其转换为base64,或者直接转换。
【讨论】:
你可以这样做:
import joblib
from io import BytesIO
import base64
with BytesIO() as tmp_bytes:
joblib.dump({"test": "test"}, tmp_bytes)
bytes_obj = tmp_bytes.getvalue()
base64_obj = base64.b64encode(bytes_obj)
那么,bytes_obj 是一个字节对象。而base64_obj 是base64 版本。选择你喜欢的。
【讨论】: