2015-05-22 36 views

回答

0

只是它。

K-means允许您指定初始质心。

0

没有任何关于您正在处理的数据性质的信息(数字如果维度,数据类型,离群值,重叠等),则无法给出具体的答案。

我不知道任何正版 k-means实现,您可以传入算法用于初始化k均值质心的质心列表。通常这些都是随机选择的。 (不能写自己的实现,这是否初始化K-均值?简单采取一个开放源码的implementaion并添加参数)

然而,在Python sklearn implementation of kmeans,有kmeans++实施,其中您可以将初始中心作为数组传递。

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

    Method for initialization, defaults to ‘k-means++’: 

    ‘k-means++’ : selects initial cluster centers for k-mean clustering 
    in a smart way to speed up convergence. 
    ... 
    If an ndarray is passed, it should be of shape 
    (n_clusters, n_features) and gives the initial centers. 

虽然没有使用它。

我写这个,我想起前/抬头k均值++:

这是一种穷人的做法:

您可以运行具有k参数等于长的k均值PSO算法列表/阵列(无论它做了什么)给了你。

然后kmeans会很快找到它自己的质心。做几次,也许用不同的距离度量(欧几里得,曼哈顿,最短,最长,平均......)和不同种子的随机数发生器。之后,每次都将k均值质心的坐标与PSO质心的坐标进行比较。

附近有1:1的对应关系(取决于您的要求),您找到了一个匹配项。然后用你的k-means分类结果列表做一些事情。