使用SciKit在python中记录文档聚类

Sid*_*rth 3 python cluster-analysis machine-learning unsupervised-learning scikit-learn

我最近开始使用python中的SciKit模块进行文档聚类.但是,我很难理解文档聚类的基础知识.

我知道的 ?

  • 文档聚类通常使用TF/IDF完成.这实质上是将文档中的单词转换为向量空间模型,然后输入到算法中.
  • 有许多算法,如k-means,神经网络,层次聚类来实现这一目标.

我的数据:

  • 我正在尝试使用linkedin数据,每个文档都是linkedin配置文件摘要,我想看看类似的工作文档是否聚集在一起.

目前的挑战:

  • 我的数据有大量的摘要描述,当我申请TF/IDF时,最终会变成10000字.有没有适当的方法来处理这种高维数据.
  • K - 均值和其他算法要求我指定no.群集(质心),在我的情况下,我不知道前期群集的数量.我相信这是一个完全无监督的学习.是否有算法可以确定否.集群本身?
  • 我之前从未使用过文档聚类,如果您了解解决此问题的教程,教科书或文章,请随时提出建议.

我浏览了SciKit网页上的代码,它包含了太多我不理解的技术词汇,如果你们有任何代码都有很好的解释或评论请分享.提前致谢.

IVl*_*lad 8

我的数据有大量的摘要描述,当我申请TF/IDF时,最终会变成10000字.有没有适当的方法来处理这种高维数据.

我的第一个建议是,除非你因为内存或执行时间问题而绝对必须这样做.

如果你必须处理它,你应该使用降维(例如PCA)或特征选择(在你的情况下可能更好,例如见chi2)

K - 均值和其他算法要求我指定no.群集(质心),在我的情况下,我不知道前期群集的数量.我相信这是一个完全无监督的学习.是否有算法可以确定否.集群本身?

如果您查看scikit-learn中可用的聚类算法,您会发现并非所有聚类算法都要求您指定聚类数.

另一个不是层次聚类,在scipy中实现.另见这个答案.

我还建议您使用KMeans并尝试手动调整群集数量,直到您对结果满意为止.

我之前从未使用过文档聚类,如果您了解解决此问题的教程,教科书或文章,请随时提出建议.

Scikit有许多处理文本数据的教程,只需在他们的网站上使用"文本数据"搜​​索查询.一个用于KMeans,另一个用于监督学习,但我建议你仔细阅读这些以便更熟悉图书馆.在我看来,从编码,风格和语法POV来看,无监督和监督学习在scikit-learn中非常相似.

文档聚类通常使用TF/IDF完成.这实质上是将文档中的单词转换为向量空间模型,然后输入到算法中.

这里的小修正:TF-IDF与聚类无关.它只是一种将文本数据转换为数字数据的方法.之后,它并不关心您对该数据(聚类,分类,回归,搜索引擎等)的处理方式.

我理解你试图传达的信息,但说"使用TF-IDF完成聚类"是不正确的.它使用聚类算法完成,TF-IDF仅在文档聚类中起预处理作用.