我正在犯错误:
UnicodeDecodeError: 'utf8' codec can't decode byte 0xba in position 1266: invalid start byte在线
X_train = self.vectorizer.fit_transform(self.data_train.data)所以我试图像这样对数据进行编码:
self.data_train.data = unicode(self.data_train.data, "utf-8")这会产生错误:
TypeError: coercing to Unicode: need string or buffer, list found在这里执行文本编码的正确方法是什么?
代码片段:
self.data_train = self.fetch_data(cache, subset='train')
if not os.path.exists(self.root_dir+"/autocreated/vectorizer.txt"):
self.vectorizer = TfidfVectorizer(sublinear_tf=True, max_df=0.5,
stop_words='english')
start_time = time()
print("Transforming the dataset")
X_train = self.vectorizer.fit_transform(self.data_train.data) // Error is here
joblib.dump(self.vectorizer, self.root_dir+"/autocreated/vectorizer.txt")发布于 2014-09-01 08:46:53
您将unicode应用于一个列表,但它只适用于单个字符串。
self.data_train.data = [s.decode("utf-8") for s in self.data_train.data]是正确的语法;但这将再次中断,因为字符串不是有效的UTF-8,正如scikit-learn已经告诉您的那样。
您可以让decode通过s.decode("utf-8", errors='ignore')忽略编码错误,或者更容易地让scikit学习处理以下内容:
TfidfVectorizer(sublinear_tf=True, max_df=0.5, stop_words='english',
decode_error='ignore')(尽管重新考虑输入为UTF-8的假设可能是个好主意;如果不是,这可能会对您的结果产生负面影响。)
https://stackoverflow.com/questions/25601881
复制相似问题