Python pickle error: UnicodeDecodeError
Python pickle error: UnicodeDecodeError
我正在尝试使用 Textblob 进行一些文本分类。我首先训练模型并使用 pickle 对其进行序列化,如下所示。
import pickle
from textblob.classifiers import NaiveBayesClassifier
with open('sample.csv', 'r') as fp:
cl = NaiveBayesClassifier(fp, format="csv")
f = open('sample_classifier.pickle', 'wb')
pickle.dump(cl, f)
f.close()
当我尝试 运行 这个文件时:
import pickle
f = open('sample_classifier.pickle', encoding="utf8")
cl = pickle.load(f)
f.close()
我收到这个错误:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position
0: invalid start byte
以下是我sample.csv的内容:
My SQL is not working correctly at all. This was a wrong choice, SQL
I've issues. Please respond immediately, Support
我哪里错了?请帮忙。
通过选择 open
模式 wb
中的文件,您选择以原始二进制文件写入。没有应用字符编码。
因此,要阅读此文件,您只需 open
模式 rb
。
我认为你应该打开文件
f = open('sample_classifier.pickle', 'rb')
cl = pickle.load(f)
你不应该解码它。 pickle.load
将为您提供您保存的任何内容的精确副本。在这一点上,你应该能够使用 cl
就像你刚刚创建它一样。
也许文件是使用 latin1 编码的:
f = open('sample_classifier.pickle', encoding="latin1")
因为 none 的建议答案帮助我解决了错误 - 我已经改用 joblib:
import joblib
clf_loaded = joblib.load('classifier_file_name.joblib')
效果很好!
尝试使用此代码:
with open('your picle file name', 'rb') as f:
classifier = pickle.load(f, encoding="latin1")
- 注意:如果未修复,您可以尝试将(编码)类型更改为(“utf-8”),如果您使用 python2,但如果您使用 python3.x,编码将是默认的(“ utf-8") ....
我正在尝试使用 Textblob 进行一些文本分类。我首先训练模型并使用 pickle 对其进行序列化,如下所示。
import pickle
from textblob.classifiers import NaiveBayesClassifier
with open('sample.csv', 'r') as fp:
cl = NaiveBayesClassifier(fp, format="csv")
f = open('sample_classifier.pickle', 'wb')
pickle.dump(cl, f)
f.close()
当我尝试 运行 这个文件时:
import pickle
f = open('sample_classifier.pickle', encoding="utf8")
cl = pickle.load(f)
f.close()
我收到这个错误:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte
以下是我sample.csv的内容:
My SQL is not working correctly at all. This was a wrong choice, SQL
I've issues. Please respond immediately, Support
我哪里错了?请帮忙。
通过选择 open
模式 wb
中的文件,您选择以原始二进制文件写入。没有应用字符编码。
因此,要阅读此文件,您只需 open
模式 rb
。
我认为你应该打开文件
f = open('sample_classifier.pickle', 'rb')
cl = pickle.load(f)
你不应该解码它。 pickle.load
将为您提供您保存的任何内容的精确副本。在这一点上,你应该能够使用 cl
就像你刚刚创建它一样。
也许文件是使用 latin1 编码的:
f = open('sample_classifier.pickle', encoding="latin1")
因为 none 的建议答案帮助我解决了错误 - 我已经改用 joblib:
import joblib
clf_loaded = joblib.load('classifier_file_name.joblib')
效果很好!
尝试使用此代码:
with open('your picle file name', 'rb') as f:
classifier = pickle.load(f, encoding="latin1")
- 注意:如果未修复,您可以尝试将(编码)类型更改为(“utf-8”),如果您使用 python2,但如果您使用 python3.x,编码将是默认的(“ utf-8") ....