Python 从CSV或数据帧存储和提取pickle文件
我正在用pickle存储sklearn模型。 但是我工作的环境只允许CSV和数据帧数据的持久性 我尝试使用以下方法将模型保存到数据帧:Python 从CSV或数据帧存储和提取pickle文件,python,pandas,csv,scikit-learn,pickle,Python,Pandas,Csv,Scikit Learn,Pickle,我正在用pickle存储sklearn模型。 但是我工作的环境只允许CSV和数据帧数据的持久性 我尝试使用以下方法将模型保存到数据帧: #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(m
#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中,并能够将其读回
谢谢。我在复制您的代码时遇到了一些问题(有一些bug)。但我设法解决了:)
存储时可以使用
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))
是否将它们另存为pickle文件
model_df[“modelstring”]”。如前所述,对于pickle(“models.pkl”)
,我不能使用CSV/DataFrame之外的任何数据格式