sklearn CountVectorizer 的 partial fit

10

CountVectorizer支持部分拟合吗?

我想使用不同的数据批次训练CountVectorizer

2个回答

2
不支持部分匹配。但你可以编写一个简单的方法来实现你的目标:
def partial_fit(self , data):
    if(hasattr(vectorizer , 'vocabulary_')):
        vocab = self.vocabulary_
    else:
        vocab = {}
    self.fit(data)
    vocab = list(set(vocab.keys()).union(set(self.vocabulary_ )))
    self.vocabulary_ = {vocab[i] : i for i in range(len(vocab))}

from sklearn.feature_extraction.text import CountVectorizer
CountVectorizer.partial_fit = partial_fit

vectorizer = CountVectorizer(stop_words=l)
vectorizer.fit(df[15].values[0:100])
vectorizer.partial_fit(df[15].values[100:200])

0

sajiad 的实现是正确的,我很感激他们分享他们的解决方案。通过修改对 hasattr() 的调用以引用 self 而不是 vectorizer,可以使其更加灵活。

我使用了一个简短的可重现示例来说明 partial_fit()fit() 的作用:

def partial_fit(self , data):
    if(hasattr(self , 'vocabulary_')):
        vocab = self.vocabulary_
    else:
        vocab = {}
    self.fit(data)
    vocab = list(set(vocab.keys()).union(set(self.vocabulary_ )))
    self.vocabulary_ = {vocab[i] : i for i in range(len(vocab))}

from sklearn.feature_extraction.text import CountVectorizer
CountVectorizer.partial_fit = partial_fit

vectorizer = CountVectorizer()

corpus = ['The quick brown fox',
'jumps over the lazy dog']

# Without partial fit
for i in corpus:
    vectorizer.fit([i])

print(vectorizer.get_feature_names())

['狗', '跳', '懒', '过', '了']
# With partial fit
for i in corpus:
    vectorizer.partial_fit([i])

print(vectorizer.get_feature_names())

['过', '狐狸', '懒', '快速的', '跳', '狗', '棕色']

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接