Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从CSV或数据帧存储和提取pickle文件_Python_Pandas_Csv_Scikit Learn_Pickle - Fatal编程技术网

Python 从CSV或数据帧存储和提取pickle文件

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

我正在用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(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之外的任何数据格式