Skip to main content
 首页 » 编程设计

python之在无监督聚类期间如何在sklearn中的TfidfVectorizer中选择参数

2025年05月04日18mengfanrong

TfidfVectorizer 提供了一种将文本编码和转换为矢量的简单方法。

我的问题是如何为 min_df、max_features、smooth_idf、sublinear_tf 等参数选择合适的值?

更新:

也许我应该就这个问题提供更多细节:

如果我对一堆文本进行无监督聚类怎么办。我没有任何文本标签而且我不知道可能有多少个集群(这实际上是我想弄清楚的)

请您参考如下方法:

例如,如果您在分类任务中使用这些向量,您可以改变这些参数(当然还有分类器的参数)并查看哪些值可以提供最佳性能。

您可以在 sklearn 中使用 GridSearchCV 和 Pipeline 对象轻松做到这一点

pipeline = Pipeline([ 
    ('tfidf', TfidfVectorizer(stop_words=stop_words)), 
    ('clf', OneVsRestClassifier(MultinomialNB( 
        fit_prior=True, class_prior=None))), 
]) 
parameters = { 
    'tfidf__max_df': (0.25, 0.5, 0.75), 
    'tfidf__ngram_range': [(1, 1), (1, 2), (1, 3)], 
    'clf__estimator__alpha': (1e-2, 1e-3) 
} 
 
grid_search_tune = GridSearchCV(pipeline, parameters, cv=2, n_jobs=2, verbose=3) 
grid_search_tune.fit(train_x, train_y) 
 
print("Best parameters set:") 
print grid_search_tune.best_estimator_.steps