我最近开始使用python中的SciKit模块进行文档聚类。但是,我很难理解文档聚类的基础知识。
我知道什么?
我的数据:
目前的挑战:
我浏览了SciKit网页上的代码,它包含了太多我不理解的技术词汇,如果你们有任何代码都有很好的解释或评论请分享。提前致谢。
答案 0 :(得分:7)
我的数据有大量的摘要描述,当我应用TF / IDF时,最终会变成10000字。有没有适当的方法来处理这种高维数据。
我的第一个建议是,除非您因内存或执行时间问题而绝对必须这样做。
如果你必须处理它,你应该使用维数减少(例如PCA)或feature selection(在你的情况下可能更好,例如见chi2)
K - 手段和其他算法要求我指定no。群集(质心),在我的情况下,我不知道前期群集的数量。我相信这是一个完全无监督的学习。是否有算法可以确定否。集群本身?
如果查看the clustering algorithms available in scikit-learn,您会发现并非所有这些都要求您指定群集数量。
另一个不是层次聚类的人implemented in scipy。另请参阅this answer。
我还建议您使用KMeans并尝试手动调整群集数量,直到您对结果满意为止。
之前我从未使用过文档聚类,如果您了解解决此问题的教程,教科书或文章,请随时提出建议。
Scikit有许多处理文本数据的教程,只需在他们的网站上使用“文本数据”搜索查询。一个用于KMeans,另一个用于监督学习,但我建议你仔细阅读这些以便更熟悉图书馆。从编码,风格和语法POV来看,在我看来,无监督学习和监督学习在scikit-learn中非常相似。
文档聚类通常使用TF / IDF完成。这实质上是将文档中的单词转换为向量空间模型,然后输入到算法中。
这里的小修正:TF-IDF与聚类无关。它只是一种将文本数据转换为数字数据的方法。之后,它并不关心你对这些数据做什么(聚类,分类,回归,搜索引擎等)。
我理解您尝试传达的消息,但说“使用TF-IDF完成群集”是不正确的。它使用聚类算法完成,TF-IDF仅在文档聚类中起预处理作用。
答案 1 :(得分:0)
答案 2 :(得分:0)
此链接可能有用。它为k-means clustering
提供了具有视觉输出http://brandonrose.org/clustering