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

如何为scikit-learn GaussianMixture手动设置初始质心

如何在scikit-learn的GaussianMixture中手动设置初始质心

可以手动设置初始质心,你之前的错误是把初始均值数组传给了init_params参数——这个参数的作用是指定初始化策略(比如'kmeans'、'random'),并非直接传入初始均值。正确的做法是使用means_init参数来传入自定义的初始均值数组。

具体代码示例

假设你要拟合的数据集是X,想要设置3个初始质心[[3,3],[2,2],[-3,-3]],代码如下:

from sklearn.mixture import GaussianMixture
import numpy as np

# 示例数据集,形状为(n_samples, n_features)
X = np.random.randn(100, 2)

# 初始化GaussianMixture,指定聚类数并传入初始质心
gmm = GaussianMixture(n_components=3, means_init=np.array([[3,3],[2,2],[-3,-3]]), init_params='random')
gmm.fit(X)

注意事项

  • means_init的数组形状必须是(n_components, n_features),要和你设置的n_components以及数据集的特征数严格匹配。
  • 若需要手动控制更多初始参数(比如聚类权重、协方差矩阵),可以直接给weights_init、precisions_init等参数赋值,无需依赖init_params的默认策略。

替代方案

如果scikit-learn的GaussianMixture无法满足更复杂的自定义需求,也可以考虑手动实现GMM的EM迭代逻辑,或者使用pgmpy等支持更灵活初始化的库,但多数场景下means_init参数已经能解决手动设置初始质心的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 18:45:00