为 kmeans 选择自己的初始化点

数据挖掘 Python scikit-学习 k-均值
2022-03-03 23:28:34

Kmeans 聚类将随机选择初始化点,然后运行算法直到达到收敛。有没有办法我可以选择自己的初始化点并将它们传递到 scikit-learn 中的 kmeans 库中。我在文档中找不到任何方法来做到这一点。

1个回答

假设您的意思是sklearn.cluster.KMeans,您可以使用init参数传入初始化点:

init : {'k-means++', 'random'}, callable or array-like of shape (n_clusters, n_features), default='k-means++' 初始化方法:

'k-means++' :以智能方式为 k-means 聚类选择初始聚类中心以加速收敛。有关更多详细信息,请参阅 k_init 中的注释部分。

'random':从初始质心的数据中随机选择 n_clusters 个观测值(行)。

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

如果传递了一个可调用对象,它应该接受参数 X、n_clusters 和一个随机状态并返回一个初始化。