为什么高斯混合模型每个 运行 都会产生不同的聚类?
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?
我正在使用 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?