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