我可以多次调用vectorizer.fit_transform来更新矢量图

时间:2016-04-21 14:16:50

标签: python scikit-learn

我在一个分隔多个文件的大型数据集上训练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,但我无法完全理解它。

提前致谢!

1 个答案:

答案 0 :(得分:1)

问题在于CountVecorizer需要事先知道你的courpus中的所有单词是什么,以便它可以有一种方法将单词映射到整数。 (如果你可以做一个"部分适合"如果它遇到新单词,它会将它们添加到最后,这将是很好的,但据我所知目前不支持)

另一种方法是使用HashingVectorizer;这并不需要适合,因为它只是通过固定的散列函数运行每个单词以获得其整数编码。