在tfidf

时间:2017-07-13 16:31:32

标签: machine-learning scikit-learn nlp tf-idf countvectorizer

目前我不确定这个定义是针对stackoverflow还是其他更理论的统计QA。但我对以下内容感到困惑。

我正在做一个binairy tekst分类任务。对于此任务,我使用管道,其中一个示例代码如下:

pipeline = Pipeline([
('vect', CountVectorizer()),
('tfidf', TfidfTransformer()),
('clf', LogisticRegression())
])

parameters = {
    'vect__ngram_range': [(1, 1), (1, 2), (1, 3)],  
    'vect__stop_words': [None, stopwords.words('dutch'), stopwordList],
    'clf__C': [0.1, 1, 10, 100, 1000]
}

所以没什么好奇怪的,但后来我开始玩参数选项/设置并注意到下面的代码(所以代码中的步骤和参数)具有最高的准确度分数(f1分数):

pipeline = Pipeline([
    ('vect', CountVectorizer()),
    ('tfidf', TfidfTransformer()),
    ('clf', LogisticRegression())
    ])

parameters = {
    'vect__ngram_range': [(1,1)],  
    'vect__stop_words': [None],
    'vect__max_df': [0.2], 
    'vect__max_features': [10000],
    'clf__C': [100]
}

所以我很高兴能找到哪些参数设置和方法得到最高分,但我无法弄清楚其确切含义。与' vectorizo​​r' -step一样,max_df的设置(忽略出现在20%以上文档中的术语)在tfidf(或某种程度上是双倍)之前应用似乎很奇怪

此外,它还使用10.000的max_features。在max_df或max_features之前使用了什么步骤?以及如何解释设置此参数的max_features并在之后执行tfidf。它是否会对10.000功能执行tfidf?

对我来说,使用max_df和max_features之类的参数后做一个tfidf似乎很奇怪?我对么?为什么?或者我应该做什么给出最高的结果..

我希望有人可以帮助我朝着正确的方向前进,非常感谢。

0 个答案:

没有答案