sklearn.cluster.KMeans 如何处理缺少质心(可用质心小于 n_clusters)的 init ndarray 参数?

Posted

技术标签:

【中文标题】sklearn.cluster.KMeans 如何处理缺少质心(可用质心小于 n_clusters)的 init ndarray 参数?【英文标题】:How does sklearn.cluster.KMeans handle an init ndarray parameter with missing centroids (available centroids less than n_clusters)? 【发布时间】:2015-07-22 01:23:56 【问题描述】:

在 Python sklearn KMeans (see documentation) 中,我想知道将形状 (n, n_features) 的 ndarray 传递给 init 参数时内部会发生什么,当 n<n_clusters

    它是否会删除给定的质心并开始一个 kmeans++ 初始化,这是init 参数的默认选择? (PDF paper kmeans++) (How does Kmeans++ work) 它是否考虑给定的质心并相应地使用 kmeans++ 填充剩余的质心? 它是否考虑给定的质心并使用随机值填充剩余的质心?

我没想到这个方法在这种情况下不会返回任何警告。这就是为什么我需要知道它是如何管理这个的。

【问题讨论】:

【参考方案1】:

如果你给它一个不匹配的init,它会调整集群的数量,你可以从source看到。这没有记录,我认为这是一个错误。 我会建议修复它。

【讨论】:

考虑到给定的质心,如果它根据 Kmeans++ 初始化方法填充剩余部分会很有趣 我们可以添加一个选项来执行此操作,但它似乎非常具体。一般来说,这可能是用户代码错误的标志。我们可以添加一个“fill_clusters='kmeans++'”选项,默认情况下会引发错误。但我不确定是否值得添加此代码。不过,您可以轻松地自己实现它。 你会如何实现这个? Link to relevant question and background

以上是关于sklearn.cluster.KMeans 如何处理缺少质心(可用质心小于 n_clusters)的 init ndarray 参数?的主要内容,如果未能解决你的问题,请参考以下文章

sklearn.cluster.KMeans 得到“TypeError:__init__() 得到了一个意外的关键字参数‘n_jobs’”

聚类--K均值算法:自主实现与sklearn.cluster.KMeans调用

聚类--K均值算法:自主实现与sklearn.cluster.KMeans调用

聚类--K均值算法:自主实现与sklearn.cluster.KMeans调用

聚类--K均值算法:自主实现与sklearn.cluster.KMeans调用

聚类--K均值算法:自主实现与sklearn.cluster.KMeans调用