基于 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
就可以存储高精度的浮点数。