scikit learn中的K均值聚类

3

我正在尝试使用Scikit-learn进行K均值聚类。 代码:

from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters = 10)
x = df.values
kmeans.fit(x.reshape(-1, 1))

如果参数 n_init = random,它会选择随机的初始质心。有没有一种方法可以获取使用的初始质心?
2个回答

3

在将KMeans对象拟合到数据后,才能获得聚类中心。

小技巧!

因此,您可以将参数max_iter设置为1。默认情况下,它设置为300,然后中心点可能会在每次迭代时发生变化。

如果您仅使用一次迭代,该算法将将每个样本分配给一个初始中心,然后停止更新中心。

因此,调用.cluster_centers_将返回初始质心!


我还有一个问题,如果max_iter = 300,在每次迭代中心点改变后,调用'.cluster_centers_'会给出最新的质心(即第300次迭代的质心)吗? - data_person
@vikky 你懂的 ;) - MMF
km = KMeans(init=cluster_centers, n_init=1, max_iter=1) print(km.cluster_centers_) 仍然出现相同的错误。 - Edward Weinert
你需要先适配你的数据。 - MMF

-2

是的,我认为您可以在调用fit()之前尝试centroids = kmeans.cluster_centers_


这会获取由库使用的初始质心吗? - data_person
我得到的是 AttributeError: 'KMeans' 对象没有属性 'cluster_centers_'。 - data_person
抱歉,fit() 调用后 cluster_centers_ 将不再可用。我会创建一个质心数组并使用它来创建聚类。kmeans = KMeans(init=centroids_array)。这样我们可以自定义质心的初始化方式。再次对我的回答未经核实表示歉意。 - xtt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接