扔硬币问题em实现(二项分布)
具体的算法介绍不赘述了,看看网上的资料就可以了解大概意思了。
这里主要是两份代码的实现。一份是参考:https://blog.csdn.net/LilyNothing/article/details/64443563
扔硬币问题的极大似然地实现
问题描述:
|
|
|
|
学生身高采样em算法实现(高斯分布)
问题描述:
从学校中抽取了n个人的身高,在统计的时候不知道哪些身高是女生还是男生的,只知道男生女生各自的身高都服从高斯分布。需要根据采样结果估计男生女生的高斯分布参数
em算法流程
- 初始化男生的高斯分布参数(loc1, scale1), 女生的高斯分布参数(loc2, scale2) 【loc: 均值, scale: 标准差】
- 根据当前的高斯分布参数来求解这些身高属于各自分布的概率序列 menpro_list , womenpro_list,保证任意 i , mepro_list[i]+womenpro_list[i] = 1
- 根据这些身高所属分布的概率通过极大似然求解更优的高斯分布参数
- 如果新的参数与上一步的参数相差在tol的可忍受范围内,就确定这是最优解,否则重复2,3步,至多重复比如1000次。
该算法的实现过程中,数据是我手动高斯采样的结果,我以男生N~(1.70, 0.05^2) , 女生 N~(1.60, 0.1^2)各自采样了500人。
得到的身高分布如图所示
最后的运行结果基本和抽样采取的参数一致:
|
|
|
|