我正在一个由多个文件分隔的大型数据集上训练一个多项式朴素贝叶斯分类器。我想用我的所有数据更新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])
相关文档可以在这里找到,但我无法完全理解它。
提前感谢!
问题是CountVecorizer
需要提前知道 courpus 中的所有单词是什么,以便它可以有一种将单词映射到整数的方法。(如果您可以进行"部分拟合",如果遇到新单词,它会将它们添加到末尾,那就太好了,但据我所知,目前不支持)
另一种方法是使用HashingVectorizer
;这不需要适合,因为它只是通过固定的哈希函数运行每个单词来获取其整数编码。