具有选定初始中心的k均值



我正在尝试使用选定的初始质心进行k-均值聚类。上面写着指定您的初始中心:

init : {‘k-means++’, ‘random’ or an ndarray} 

如果传递了一个ndarray,它的形状应该是(n_clustersn_features),并给出初始中心。

我在Python中的代码:

X = np.array([[-19.07480000,  -8.536],
              [22.010800000,-10.9737],
              [12.659700000,19.2601]], np.float64)
km = KMeans(n_clusters=3,init=X).fit(data)
# print km
centers = km.cluster_centers_
print centers

返回错误:

RuntimeWarning: Explicit initial center position passed: performing only one init in k-means instead of n_init=10
  n_jobs=self.n_jobs)

并返回相同的初始中心。你知道如何形成最初的中心以便被接受吗?

KMeans的默认行为是使用不同的随机质心多次初始化算法(即Forgy方法)。随机初始化的次数由n_init=参数(docs)控制:

n_init:int,默认值:10

k均值算法在不同情况下运行的时间质心种子。最终结果将是n_init在惯性方面连续运行。

如果将数组作为init=参数传递,则将使用数组中明确指定的质心仅执行单个初始化。您得到的是RuntimeWarning,因为您仍在传递默认值n_init=10(以下是源代码的相关行)。

实际上,忽略这个警告是完全可以的,但如果init=参数是一个数组,则可以通过传递n_init=1来使它完全消失。

相关内容

  • 没有找到相关文章

最新更新