我收到错误:
UnicodeDecodeError: 'utf8' codec can't decode byte 0xba in position 1266: invalid start byte
在线
^{pr2}$所以我试着把数据编码成这样:
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")
您将
unicode
应用于一个列表,但它只适用于单个字符串。在是正确的语法;但这将再次中断,因为字符串不是有效的UTF-8,正如scikit learn已经告诉过您的那样。在
您可以通过
^{pr2}$s.decode("utf-8", errors='ignore')
让decode
忽略编码错误,或者让scikit learn处理以下问题更容易:(尽管重新考虑输入是UTF-8的假设可能是个好主意;如果不是,这可能会对结果产生负面影响。)
相关问题 更多 >
编程相关推荐