【问题标题】:What is the best algorithm to perform unsupervised text classification(clustering) using python scikit-learn?使用 python scikit-learn 执行无监督文本分类(聚类)的最佳算法是什么?
【发布时间】:2017-10-10 12:22:45
【问题描述】:

我试过 CountVectorizer + KMeans 但我不知道集群的数量。当我使用gap statistic 方法时,计算 KMeans 中的簇数花费了很多时间。 NMF 也需要事先确定组件的数量。

【问题讨论】:

    标签: python k-means text-classification unsupervised-learning


    【解决方案1】:

    没有一种算法最适合无监督文本分类。这取决于您拥有的数据、您想要实现的目标等。

    如果您想避免聚类数量问题,可以尝试DBSCAN,这是一种基于密度的聚类算法:

    Wikipedia: 上的 DBSCAN 基于密度的聚类算法:给定某个空间中的一组点,它将紧密堆积在一起的点(具有许多附近邻居的点)组合在一起,将单独位于低密度区域中的点标记为异常值(其最近的邻居是太远了)。

    DBSCAN 通过递归地将点连接到附近的密集点组(例如一个集群)来自动查找集群的数量。

    要使用 DBSCAN,要调整的最重要参数是 epsilon(控制被视为邻居的最大距离)和 min_samples(被视为核心点的邻域中的样本数)。尝试从 sklearn 提供的默认参数开始,并调整它们以获得更好的特定任务结果。

    【讨论】:

    • 几乎所有样本都被标记为 -1 ,即嘈杂。我试过 epsilon = 0.7 但没有帮助。
    • 尝试从非常小的 min_samples 值和非常大的 epsilon 开始,然后在评估聚类结果时朝着大的 min_samples 和小的 epsilon 努力。
    猜你喜欢
    • 2017-05-01
    • 2018-07-03
    • 2016-05-02
    • 2013-02-24
    • 2015-05-12
    • 2019-04-16
    • 2019-05-09
    • 2021-07-06
    • 2012-05-14
    相关资源
    最近更新 更多