EM简单实现
来源:互联网 发布:淘宝hd降级 编辑:程序博客网 时间:2024/06/05 20:00
format long;clc;clear all;X=load('datasetoriginal.txt');[num,dim]=size(X);%disp(X);%参数初始化mu1=[170.0 60.0];mu2=[160.0 50.0];sigma1=[5.0 2.0;2.0 5.0];sigma2=[5.0 2.0;2.0 5.0];fai=0.5;Qb=zeros(num,1);Qg=zeros(num,1);L1=zeros(50,1);L2=zeros(50,1);prel=-3000;for flag=1:50%%%% E步 %%%% for i=1:num %男生 a=mvnpdf(X(i,1:2),mu1,sigma1)*fai; b=mvnpdf(X(i,1:2),mu2,sigma2)*(1-fai); Qb(i)=a/(a+b); %女生 Qg(i)=b/(a+b); end%%%% M步 %%%%%计算Fai值fai=sum(Qb)/num;%计算Mu1和Mu2mu1=Qb'*X(:,1:2)/sum(Qb);mu2=Qg'*X(:,1:2)/sum(Qg);%计算Sigma1和sigma2Ssum_1=[0 0;0 0];Ssum_2=[0 0;0 0]; for i=1:num Ssum_1=Ssum_1+( (X(i,1:2)-mu1)' * (X(i,1:2)-mu1) )* Qb(i); Ssum_2=Ssum_2+( (X(i,1:2)-mu2)' * (X(i,1:2)-mu2) )* Qg(i); endsigma1=Ssum_1/sum(Qb);sigma2=Ssum_2/sum(Qg);%判断收敛,并画出L函数的增长图像 for i=1:num L1(flag)=L1(flag) + Qb(i) * log(mvnpdf(X(i,1:2),mu1,sigma1)*fai/Qb(i)) + Qg(i) * log(mvnpdf(X(i,1:2),mu2,sigma2)*(1-fai)/Qg(i)); end L2(flag)=flag; if L1(flag)-prel<0.0001 x=L2(1:flag); y=L1(1:flag); plot(x,y); break; end prel=L1(flag);endresult=zeros(num,1);for i=1:num if Qb(i)>Qg(i) result(i)=1; else result(i)=0; endendcornum=0;for i=1:num if result(i)==X(i,3) cornum=cornum+1; endend
0 0
- EM简单实现
- EM算法原理和python简单实现
- EM实现
- EM算法简单理解
- EM算法简单介绍
- EM 简单例子
- 简单写写EM算法
- em px 简单换算
- EM 算法 的简单理解
- EM算法的简单解释
- GMM的EM算法实现
- GMM的EM算法实现
- EM 算法的 Python 实现
- GMM的EM算法实现
- GMM的EM算法实现
- GMM的EM算法实现
- GMM的EM算法实现
- GMM的EM算法实现
- OpenGl多重纹理的计算
- ios的runtime
- 输入输出函数_1
- 《Who moved my cheese?》笔记
- Git 错误集锦(ing...)
- EM简单实现
- static、final、this、super的使用
- Linux-0.11内核源码分析系列:关于线性地址,逻辑地址,物理地址的关系与区别
- python3.x学习小记
- 静态库和动态库
- 深入浅出linux-计算机的组成(4)
- log4j用法和配置学习笔记
- Vector 总结
- 在数组中随机插入100个不重复的数