跳转至

2022 年 11 月

基于 EM 算法的多元高斯混合模型聚类及其 Python 实现

基于 EM 算法,推导多元高斯混合模型聚类的参数迭代公式,并使用 Python 对数据集进行聚类和各类别的参数求解。

在编写代码的过程中,遇到了一个非常简单但一直没发现的 Bug。

定义数组用all_density = np.array([0]*K),再用all_density[k] = k_density并不会让all_density的第k个元素改变。这是因为all_density是介于 0 到 1 之间的,而在定义all_density的时候没有指定数组内部的数据类型,默认是不支持小数的,因此赋值之后all_density的第k个元素仍然是 0。

解决方法:定义数组的时候一定要指定元素的数据类型,指定为dtype=flout64就可以存储高精度的浮点数。

result