【问题标题】:Does Sci-kit Learn Clustering model have hidden global state?Sci-kit Learn Clustering 模型是否具有隐藏的全局状态?
【发布时间】:2018-12-02 12:34:30
【问题描述】:

我正在尝试使用 scikit-learn 的 AgglomerativeClustering 模型对一些数据进行聚类。

为了确定更好的参数,我在 for 循环中尝试了不同的参数。似乎只有第一个结果分布良好,其他聚类结果太偏,主要是一个大聚类(~2000)和其他1或2个元素的聚类。

我的代码如下所示:

for n in range(8, 15):
    model = AgglomerativeClustering(n)
    result = do_cluster(model, data_to_cluster)
    show_cluster_result(result)

在我的do_cluster 函数中,我只需要model.fit_predict(data_to_cluster)

我假设我必须重置 model 在集群或其他东西之后。

谁能告诉我我错过了什么。


在阅读了友好的答案后,我重新检查了我的代码。我的代码有一个愚蠢的错误,它在显示结果(包含对源数据的引用)期间更改了 data_to_cluster 的一些值。我深度复制了源数据,错误消失了。我应该更仔细地检查我的代码。

谢谢。

【问题讨论】:

    标签: scikit-learn cluster-analysis


    【解决方案1】:

    您在每次迭代时都会实例化一个新模型,因此这些实例之间不会传递全局状态。

    如果您对聚类不满意,请尝试调整此聚类算法的一些输入参数(请参阅API docs)或尝试其他聚类算法(link)。

    【讨论】:

      【解决方案2】:

      它是相当常见的分层聚类(和其他算法),用于生成包含异常值 em>的微小群集。这就是为什么,例如,DBSCAN有一个噪声概念。这些数据点存在,它们并不适当地处理为群集。

      所以我怀疑有一个“全球州”导致这一点。例如,您可以简单地缩小范围,并仅尝试k = 12。如果你假设是正确的,则使用单个k应该是好的。

      如果您想更好地了解结果,请查看树木图。它比刚刚尝试不同的k更丰富的信息。

      【讨论】:

        猜你喜欢
        • 2015-03-06
        • 1970-01-01
        • 2014-05-17
        • 1970-01-01
        • 2020-05-20
        • 2016-05-12
        • 2018-01-01
        • 1970-01-01
        • 2011-07-07
        相关资源
        最近更新 更多