如何应用具有从 PSO 算法指定的确定集群位置的 KMEANS 算法?
问问题
269 次
2 回答
0
做吧。
K-means 允许您指定初始质心。
于 2015-05-22T20:19:20.433 回答
0
如果没有任何关于您正在处理的数据性质的信息(如果维度、数据类型、异常值、重叠等),就不可能给出具体的答案。
我不知道任何真正的k-means 实现,您可以在其中传递算法用来初始化 k-means 质心的质心列表。通常这些是随机选择的。(您不能编写自己的 k-means 实现来进行此初始化吗?简单地采用开源实现并添加一个参数)
但是,在 kmeans 的 python sklearn 实现中,有一个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.
不过没用过。
我在记得/查找kmeans++ 之前写了这个:
这是穷人的做法:
k
您可以使用等于PSO 算法(无论它做什么)给您的列表/数组长度的参数运行 kmeans 。
然后kmeans会很快找到自己的质心。多次执行此操作,可能使用不同的距离度量(欧几里得、曼哈顿、最短、最长、平均...),以及随机数生成器的不同种子。之后,每次将 k-means 质心的坐标与 PSO 质心的坐标进行比较。
当存在接近1:1 的对应关系时(取决于您的要求),您就找到了匹配项。然后对你的 k-means 分类结果列表做一些事情。
于 2015-05-24T09:13:41.660 回答