为什么高斯混合模型每个 运行 都会产生不同的聚类?

Why does a Gaussian Mixture Model make different clusters each run?

我正在使用 Python 对一组 5D 数据进行聚类。每个 运行 生成一组不同的集群。我只是好奇这是为什么。

代码如下:

    df = pd.read_csv('database.csv')
    ratios = df.drop(['patient', 'class'], axis=1)
            
    gaussian = GaussianMixture(n_components=7).fit(ratios).predict(ratios)
            
    df['gaussian'] = gaussian
    
    cluster_counts = Counter(df['gaussian'])
    centroids = NearestCentroid().fit(ratios, gaussian).centroids_
    sum_of_distances = np.zeros((len(centroids), 5))

这是一张图表,显示了一个 运行 到质心的平均距离之和:

这是另一个 运行:

的图表

您可以看到高斯混合的条形各不相同,但是,其他聚类算法没有变化。

如果有人能解释为什么会发生这种情况,我们将不胜感激。

MixtureGaussian Documentation 您对 random_state 参数感兴趣。每次 运行 模型的参数初始化可能不同。

random_state: int, RandomState instance or None, default=None Controls the random seed given to the method chosen to initialize the parameters (see init_params). In addition, it controls the generation of random samples from the fitted distribution (see the method sample). Pass an int for reproducible output across multiple function calls.

更多关于 python 中的随机和种子: random.seed(): What does it do?