You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于预计算质心使用sklearn KMeans?求max_iter=0适配方案

使用scikit-learn KMeans基于预计算质心聚类的可行方案

直接设置n_init=0不可行,因为scikit-learn的KMeans参数校验不允许该值为0,但可以通过以下方法实现需求:

  • 核心思路:利用init参数传入预计算质心,配合max_iter=0和n_init=1(允许的最小值),让模型跳过迭代更新步骤,仅完成初始化,从而保留预计算质心并使用KMeans的完整接口。

代码示例

from sklearn.cluster import KMeans
import numpy as np

# 预计算的质心数组
precomputed_centroids = np.array([[1, 2], [3, 4], [5, 6]])
# 待聚类的样本数据
X = np.array([[0, 1], [2, 3], [4, 5], [6, 7]])

# 初始化KMeans模型
kmeans = KMeans(
    n_clusters=len(precomputed_centroids),
    init=precomputed_centroids,
    max_iter=0,
    n_init=1,
    algorithm='full'
)

# 执行拟合(仅完成初始化,不更新质心)
kmeans.fit(X)

# 使用模型接口完成后续操作
# 获取样本聚类标签
labels = kmeans.predict(X)
print("聚类标签:", labels)

# 验证质心未被修改
print("预计算质心:", precomputed_centroids)
print("模型保留的质心:", kmeans.cluster_centers_)

关键注意事项

  1. 必须保证n_clusters的值与precomputed_centroids的长度一致,否则会触发参数不匹配错误。
  2. 指定algorithm='full'可避免elkan算法在max_iter=0场景下可能出现的异常,确保模型稳定运行。
  3. 模型拟合后,可正常使用KMeans的所有接口方法(如predict、transform、cluster_centers_属性等),满足后续标记点、采样点等需求。

内容的提问来源于stack exchange,提问作者Chutlhu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 11:52:21