【发布时间】:2020-05-29 00:00:18
【问题描述】:
做Kmeans聚类分析,如何手动定义某个聚类中心? 例如,我想说我的聚类中心是 [1,2,3] 和 [3,4,5],现在我想将我的向量聚类到预定义的中心。
类似kmeans.cluster_centers_ = [[1,2,3],[3,4,5]] 的东西?
解决我的问题,这就是我所做的:
number_of_clusters = len(vec)
kmeans = KMeans(number_of_clusters, init='k-means++', n_init=100)
kmeans.fit(vec)
它基本上为每个向量定义了一个簇。但是由于我有数千个向量/句子,因此计算需要很长时间。必须有一个选项可以将矢量坐标直接设置为簇坐标,而无需使用 kmeans 算法计算它们。 (因为中心输出基本上是我运行算法后的矢量坐标......)
编辑以更具体地说明我的任务:
所以我想要的是我有大量的向量(从句子生成),现在我想对这些进行聚类。但是想象一下,我有两列句子,并且总是想将 B 列句子排序为 A 列句子。不是 A 列的句子。这就是为什么我要为 A 列向量设置聚类中心,然后预测与这些中心最近的 B 向量。希望这是有道理的
我正在使用 sklearn kmeans atm
【问题讨论】:
-
你的问题很模糊。您是自己实现聚类算法吗?或者你正在使用某种图书馆?请发布您的代码的简单示例,以便我们知道发生了什么
-
通常,在聚类算法中,我们不会在某个点启动一个聚类,而是将它们随机化。我不知道是否有这样做的选择,我从未尝试过。您可以尝试查看您正在使用的库的文档,看看是否有这样的选项
-
我认为您在这里需要不同的算法。如果您手动定义集群的位置,您并没有准确分析这些集群
-
所以我想要的是我有大量的向量(从句子生成),现在我想对这些进行聚类。但是想象一下,我有两列句子,并且总是想将 B 列句子排序为 A 列句子。不是 A 列的句子。这就是为什么我要为 A 列向量设置聚类中心,然后预测与这些中心最近的 B 向量。希望这是有道理的
-
不就是最小距离问题吗?只需将 A 列聚类为 n 个聚类。然后为每个 B 句子找到到 n 个 A 聚类中心的距离。并选择最短距离?不是真正的聚类问题。