具有选定初始中心的 k-means
k-means with selected initial centers
我正在尝试使用选定的初始质心进行 k 均值聚类。
它说 here
指定您的初始中心:
init : {‘k-means++’, ‘random’ or an ndarray}
如果传递 ndarray
,它应该是形状 (n_clusters
, n_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
Returns一个错误:
RuntimeWarning: Explicit initial center position passed: performing only one init in k-means instead of n_init=10
n_jobs=self.n_jobs)
和return相同的初始中心。知道如何形成初始中心以便它可以被接受吗?
KMeans
的默认行为是使用不同的随机质心(即 Forgy method). The number of random initializations is then controlled by the n_init=
parameter (docs)多次初始化算法:
n_init : int, default: 10
Number of time the k-means algorithm will be run with different
centroid seeds. The final results will be the best output of
n_init
consecutive runs in terms of inertia.
如果您将数组作为 init=
参数传递,则只会使用数组中明确指定的质心执行 单个 初始化。你得到一个 RuntimeWarning
因为你仍然传递默认值 n_init=10
(here 是源代码的相关行)。
忽略此警告实际上完全没问题,但如果您的 init=
参数是数组,则可以通过传递 n_init=1
使其完全消失。
我正在尝试使用选定的初始质心进行 k 均值聚类。 它说 here 指定您的初始中心:
init : {‘k-means++’, ‘random’ or an ndarray}
如果传递 ndarray
,它应该是形状 (n_clusters
, n_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
Returns一个错误:
RuntimeWarning: Explicit initial center position passed: performing only one init in k-means instead of n_init=10
n_jobs=self.n_jobs)
和return相同的初始中心。知道如何形成初始中心以便它可以被接受吗?
KMeans
的默认行为是使用不同的随机质心(即 Forgy method). The number of random initializations is then controlled by the n_init=
parameter (docs)多次初始化算法:
n_init : int, default: 10
Number of time the k-means algorithm will be run with different centroid seeds. The final results will be the best output of
n_init
consecutive runs in terms of inertia.
如果您将数组作为 init=
参数传递,则只会使用数组中明确指定的质心执行 单个 初始化。你得到一个 RuntimeWarning
因为你仍然传递默认值 n_init=10
(here 是源代码的相关行)。
忽略此警告实际上完全没问题,但如果您的 init=
参数是数组,则可以通过传递 n_init=1
使其完全消失。