【问题标题】:Using K-Means with predefined centers?使用带有预定义中心的 K-Means?
【发布时间】:2018-10-23 06:56:02
【问题描述】:

我正在运行一个 KNN 分类器,其特征向量来自一个 K-Means 分类器(更具体地说,sklearn.cluster.MiniBatchKMeans)。由于每次运行算法时我都会得到不同的结果,因此 K-means 从随机点开始。我已经将集群中心存储在一个单独的 .npy 文件中,从结果良好的时候开始,但现在我需要在我的 K-means 中使用这些中心,我不知道如何。

按照this 的建议,我尝试使用集群中心作为起点,如下所示:

MiniBatchKMeans.__init__(self, n_clusters=self.clusters, n_init=1, init=np.load('cluster_centers.npy'))

不过,每次运行算法时,结果都会发生变化。

然后我尝试在拟合数据后手动更改聚类中心:

kMeansInstance.cluster_centers_ = np.load('cluster_centers.npy')

不过,每次结果都不一样。

我能想到的唯一其他解决方案是使用我保存的中心手动实现预测方法,但我不知道如何,也不知道是否有比重写轮子更好的方法来解决我的问题.

【问题讨论】:

    标签: python machine-learning scikit-learn cluster-analysis k-means


    【解决方案1】:

    Mini batch k-means 仅考虑数据的样本

    它为此使用了一个随机生成器。

    如果您想要确定性行为,请修复随机种子,并首选不使用随机样本的算法(即,使用常规 k-means 而不是 mini-batch k-means)。

    【讨论】:

      【解决方案2】:

      我猜想修复 random_state 就可以了。

      API docu

      【讨论】:

        猜你喜欢
        • 2011-05-18
        • 2015-06-18
        • 2018-04-23
        • 2016-01-07
        • 2015-06-04
        • 2014-01-25
        • 2019-05-14
        • 2020-02-21
        相关资源
        最近更新 更多