在不拟合的情况下使用 sklearn KMean

Using sklearn KMeans without fitting

提问人:Chutlhu 提问时间:10/27/2023 最后编辑:petezurichChutlhu 更新时间:10/31/2023 访问量:68

问:

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

我可以自己计算它,但是使用 scikit-learn 的 KMean 的界面对于其他操作(例如,稍后标记点和采样点)非常有用。

基本上,有没有一种解决方法可以将 KMean 与 和 一起使用?max_iter=0n_init=0

python 机器学习 scikit-learn k-means

评论

0赞 Chutlhu 10/27/2023
也许这样的事情可以工作:给定数据和提供的初始化,, ,Xcentroidskm = KMeans(n_clusters=centroids.shape[0])km.cluster_centers_ = centroidskm._n_threads = 1labels = km.predict(X)

答:

0赞 lejlot 10/28/2023 #1

scikit-learn 中的 KMean 接受可调用对象作为初始值设定项

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

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

“随机”:从数据中随机选择n_clusters观测值(行) 对于初始质心。

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

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

所以你可以做

def custom_fun(X, n_clusters, random_state):
   ...

kmeans = Kmeans(init=custom_fun)

然后设置max_iters=0

由于 sklearn 进行参数检查和max_iters

import sklearn
sklearn.set_config(
   skip_parameter_validation=True,  
)

评论

0赞 Chutlhu 10/30/2023
谢谢。我仍然有错误,你能完成你的问题吗?我应该在函数中写什么?The 'max_iter' parameter of KMeans must be an int in the range [1, inf). Got 0 instead.
0赞 lejlot 10/31/2023
查看更新(您需要禁用这些检查)