python - 从 CSV 或 DataFrame 存储和提取泡菜文件
问题描述
我正在用泡菜存储 sklearn 模型。但我工作的环境只允许 CSV 和 DataFrame 数据的持久性。
我尝试使用以下方法将模型保存到 DataFrames:
#create empty DataFrame
model_df = pd.DataFrame(columns=["modelstring"])
#Save one model to each row
for model in range(1, len(model_dict)):
model_df.loc[model] = pickle.dumps(model_dict[model], protocol = 3)
...
#Store and reload csv file
model_df["modelstring"].to_csv("models.csv")
model_df2 = pd.read_csv("models.csv")
...
#Load Model from Pickle
model = pickle.loads(model_df2.loc[1].modelstring)
但是当读出它们时,这些文件不再是字节码,而是字符串,我无法将其转换回字节。
输入格式:b'\x80\x03csklearn.svm.classes\nOneClassSVM\nq\x...'
输出格式:'b\'\x80\x03csklearn.svm.classes\nOneClassSVM\nq...'
有没有办法将模型存储在 csv 中并能够将它们读回?
谢谢。
解决方案
我在复制您的代码时遇到了几个问题(有一些错误)。但我设法解决了它:)
您可以hex
在存储时使用,bytes.fromhex()
在从文件中读取时使用。
它是这样的:
#create empty DataFrame
model_df = pd.DataFrame(columns=["modelstring"])
#Save one model to each row
for model in range(1, len(model_dict)):
model_df.loc[model] = pickle.dumps(model_dict[model], protocol = 3).hex()
...
#Store and reload csv file
model_df["modelstring"].to_csv("models.csv")
model_df2 = pd.read_csv("models.csv")
...
#Load Model from Pickle
model = pickle.loads(bytes.fromhex(model_df2.loc[1].modelstring))
推荐阅读
- angular - 角度组件中的附加资源参考
- javascript - 更改表单“方法”不起作用,浏览器发出“GET”请求
- java - 当 Spring/Hibernate JPARepository 返回时,Entties 处于什么生命周期状态?
- sql - 从两列sql创建一行
- sql - 优化 PostgreSQL 查询,对函数扫描和嵌套循环进行缓慢和错误的估计
- batch-file - 如何将一行中的两个字符串存储到不同的变量批次
- kubernetes - 将节点添加到 Windows Minikube Kubernetes 安装 - 如何?
- firebase - 如何解决 Gradle 构建失败错误 - Unity
- android - 每次我重新启动应用程序时都会删除 SQLite 数据库
- http - 如何在 OctoberCMS 中设置 Cache-Control HTTP 标头?