我在一个分隔多个文件的大型数据集上训练Multinomial Naive Bayes分类器。我想用我的所有数据更新CountVectorizer
,但当时只将一个文件读入内存。
我目前的代码:
raw_documents = []
for f in files:
text = np.loadtxt(open("csv/{f}".format(f=f), "r", delimiter="\t", dtype="str", comments=None)
raw_documents.extend(list(text[:,1]))
vectorizer = CountVectorizer(stop_words=None)
train_features = vectorizer.fit_transform(raw_documents)
是否可以部分调用fit_transform
,以便我可以
vectorizer = CountVectorizer(stop_words=None)
for f in files:
text = np.loadtxt(open("csv/{f}".format(f=f), "r", delimiter="\t", dtype="str", comments=None)
train_features = vectorizer.fit_transform(text[:,1])
可以找到相关文档here,但我无法完全理解它。
提前致谢!
答案 0 :(得分:1)
问题在于CountVecorizer
需要事先知道你的courpus中的所有单词是什么,以便它可以有一种方法将单词映射到整数。 (如果你可以做一个"部分适合"如果它遇到新单词,它会将它们添加到最后,这将是很好的,但据我所知目前不支持)
另一种方法是使用HashingVectorizer
;这并不需要适合,因为它只是通过固定的散列函数运行每个单词以获得其整数编码。