使用sklearn KMeans而不进行拟合

问题描述 投票:0回答:1

here中的问题类似,我想根据预先计算的质心对一些数据进行聚类。与该问题不同的是,这些质心是由其他方法提供的。

我可以自己计算它,但是使用 scikit-learn 的 KMeans 接口对于其他操作(例如稍后的标签点和样本点)非常有用。

基本上,有没有一种解决方法可以将 KMean 与

max_iter=0
n_init=0
一起使用?

python machine-learning scikit-learn k-means
1个回答
0
投票
scikit-learn 中的 KMeans 接受

callable 作为初始化器

init{‘k-means++’, ‘random’},可调用或类似数组的形状 (n_clusters, n_features), default='k-means++' 方法 初始化:

‘k-means++’:使用基于采样的方法选择初始聚类质心 基于点贡献的经验概率分布 到整体惯性。该技术加快了收敛速度。这 实现的算法是“贪婪k-means++”。它不同于 vanilla k-means++ 通过在每个采样步骤进行多次试验, 选择其中最好的质心。

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

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

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

所以你可以这样做

def custom_fun(X, n_clusters, random_state): ... kmeans = Kmeans(init=custom_fun)

© www.soinside.com 2019 - 2024. All rights reserved.