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

Posted

技术标签:

【中文标题】如何在无监督聚类期间在 sklearn 的 TfidfVectorizer 中选择参数【英文标题】:how to choose parameters in TfidfVectorizer in sklearn during unsupervised clustering 【发布时间】:2017-10-19 08:39:14 【问题描述】:

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

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

更新:

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

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

【问题讨论】:

查看“交叉验证”。该决策过程称为“超参数调整”,因为min_df 等都是超参数。 【参考方案1】:

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

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

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

【讨论】:

感谢您的详细解答。不幸的是,我正在对一组文本进行无监督聚类。而且我什至没有任何可能的集群的标签。我该怎么办? 您可以评估您的集群有多好,例如:wikiwand.com/en/Cluster_analysis#/Evaluation_and_assessment,并检查 TfIdfVectorizer 参数对结果的影响

以上是关于如何在无监督聚类期间在 sklearn 的 TfidfVectorizer 中选择参数的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在无监督学习中使用分组的数据行对数据进行聚类?

机器学习 sklearn 无监督学习 聚类算法 DBSCAN

机器学习 sklearn 无监督学习 聚类算法 DBSCAN

聚类的重要性是啥?

如何从集群实现 sklearn -AgglomerativeClustering?

机器学习 sklearn 无监督学习 聚类算法 K-means