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

手动指定初始质心的K-means算法实现是否正确?

K-means指定初始质心10次迭代结果校验

你写的核心代码逻辑是对的,跑出来的结果在默认配置下符合预期,有两个关键细节需要明确:

  • scikit-learn的KMeans类默认开启早停机制,当相邻两次迭代的质心位置变化小于tol参数(默认值1e-4)时,会直接终止迭代,不会跑满max_iter设定的10次。如果你需要严格执行满10次迭代,需要在初始化模型时补充传入tol=0参数。
  • 你显式传入了题目指定的初始质心数组,没有使用默认的k-means++随机初始化逻辑,这一步完全符合题目要求,不会出现初始点不匹配导致的结果偏差。

题目要求

  • 聚类簇数:3
  • 指定初始质心:[1,1,1,1]、[-1,-1,-1,-1]、[1,-1,1,-1]
  • 迭代规则:执行10次K-means迭代
  • 输出目标:迭代完成后的各簇质心位置

核心实现代码

kmeans = KMeans(
    n_clusters=3,
    max_iter=10,
    init=np.array([[1, 1, 1, 1],[-1, -1, -1, -1],[1, -1, 1, -1]], np.float64),
    random_state=42
)  
...
kmeans.cluster_centers_

运行输出结果

array([[ 1.02575735, -0.00207592, -0.02395886,  0.63623732],
       [ 0.10361404,  0.00370027,  0.00669603, -0.03432606],
       [ 0.99690983,  0.48052607,  0.94034839, -0.00726928]])

如果题目没有强制要求必须跑满10次迭代(允许算法收敛后提前停止),上面的结果就是正确的。如果要求严格执行满10次迭代,补充tol=0参数后重新运行即可得到对应结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 13:03:19