Error on saving to Pickle - TypeError: write() argument must be str, not bytes
Error on saving to Pickle - TypeError: write() argument must be str, not bytes
我正在尝试将以下内容保存到 pickle 中,但收到错误消息说我的参数必须是 str,而不是 bytes。我查看了 pickle 文档并尝试将 x 和 y 转换为字符串,但没有成功。我做错了什么?
import pandas as pd
from sklearn.naive_bayes import GaussianNB
import pickle
df = {'Description':[100,200,300,400,500],'Level_1':[1,2,3,4,5]}
df = pd.DataFrame(df,columns=['Description','Level_1'])
print(df)
Description Level_1
0 100 1
1 200 2
2 300 3
3 400 4
4 500 5
x = df[['Description']]
y = df['Level_1']
nb = GaussianNB()
nb.fit(x,y)
open('level1_classifier.pk', 'wb')
with open ('level1_classifier.pk') as l1clf:
pickle.dump(nb, l1clf)
Error Message:
``TypeError Traceback (most recent call last)
<ipython-input-21-89a76f30f361> in <module>
6 #open('level1_classifier.pk', 'wb')
7 with open ('level1_classifier.pk') as l1clf:
----> 8 pickle.dump(nb, l1clf)
TypeError: write() argument must be str, not bytes
没有合适的堆栈跟踪很难调试,请添加一个。
就是说,您正在打开 pickle 文件进行写入,然后打开它进行读取。这是不必要的,可能是这里失败的原因。
这个:
open('level1_classifier.pk', 'wb')
with open ('level1_classifier.pk') as l1clf:
pickle.dump(nb, l1clf)
大概应该是这样的:
with open('level1_classifier.pk', 'wb') as l1clf:
pickle.dump(nb, l1clf)
有关详细信息,请参阅 this guide
我正在尝试将以下内容保存到 pickle 中,但收到错误消息说我的参数必须是 str,而不是 bytes。我查看了 pickle 文档并尝试将 x 和 y 转换为字符串,但没有成功。我做错了什么?
import pandas as pd
from sklearn.naive_bayes import GaussianNB
import pickle
df = {'Description':[100,200,300,400,500],'Level_1':[1,2,3,4,5]}
df = pd.DataFrame(df,columns=['Description','Level_1'])
print(df)
Description Level_1
0 100 1
1 200 2
2 300 3
3 400 4
4 500 5
x = df[['Description']]
y = df['Level_1']
nb = GaussianNB()
nb.fit(x,y)
open('level1_classifier.pk', 'wb')
with open ('level1_classifier.pk') as l1clf:
pickle.dump(nb, l1clf)
Error Message:
``TypeError Traceback (most recent call last)
<ipython-input-21-89a76f30f361> in <module>
6 #open('level1_classifier.pk', 'wb')
7 with open ('level1_classifier.pk') as l1clf:
----> 8 pickle.dump(nb, l1clf)
TypeError: write() argument must be str, not bytes
没有合适的堆栈跟踪很难调试,请添加一个。
就是说,您正在打开 pickle 文件进行写入,然后打开它进行读取。这是不必要的,可能是这里失败的原因。
这个:
open('level1_classifier.pk', 'wb')
with open ('level1_classifier.pk') as l1clf:
pickle.dump(nb, l1clf)
大概应该是这样的:
with open('level1_classifier.pk', 'wb') as l1clf:
pickle.dump(nb, l1clf)
有关详细信息,请参阅 this guide