EM算法计算混合高斯分布的matlab代码
时间: 2023-11-18 22:01:45 浏览: 94
以下是使用EM算法计算混合高斯分布的MATLAB代码示例:
```matlab
% 设置参数
K = 2; % 混合高斯分布中高斯分布的个数
N = 500; % 样本数量
D = 2; % 样本特征维度
% 生成样本
mu_true = [1 2;-2 -3]; % 真实高斯分布的均值
sigma_true = cat(3,[2 0;0 0.5],[0.5 0;0 1]); % 真实高斯分布的协方差矩阵
alpha_true = [0.4,0.6]; % 真实高斯分布的权重
x = zeros(N,D);
for i = 1:N
k = randi(K);
x(i,:) = mvnrnd(mu_true(k,:),sigma_true(:,:,k));
end
% EM算法计算混合高斯分布
alpha = ones(1,K)./K; % 初始化高斯分布的权重
mu = rand(K,D).*range(x)+min(x); % 初始化高斯分布的均值
sigma = repmat(eye(D),[1,1,K]); % 初始化高斯分布的协方差矩阵
gamma = zeros(N,K); % 初始化样本属于每个高斯分布的后验概率
log_likelihood = -inf; % 初始化对数似然函数值
for iter = 1:100
% E步:计算样本属于每个高斯分布的后验概率
for k = 1:K
gamma(:,k) = alpha(k)*mvnpdf(x,mu(k,:),sigma(:,:,k));
end
gamma = gamma./sum(gamma,2);
% M步:更新高斯分布的参数
Nk = sum(gamma,1);
alpha = Nk./N;
mu = gamma'*x./Nk';
for k = 1:K
x_centered = x-mu(k,:);
sigma(:,:,k) = x_centered'*diag(gamma(:,k))*x_centered./Nk(k);
end
% 计算对数似然函数值
log_likelihood_new = sum(log(sum(gamma.*repmat(alpha,[N,1]),2)));
if abs(log_likelihood_new-log_likelihood) < 1e-6 % 判断收敛
break;
end
log_likelihood = log_likelihood_new;
end
% 可视化结果
figure;
scatter(x(:,1),x(:,2),10,gamma(:,1),'filled');
hold on;
scatter(mu(:,1),mu(:,2),50,'k','filled');
contour(mu_true(:,1),mu_true(:,2),mvnpdf([xx(:),yy(:)],mu_true(1,:),sigma_true(:,:,1)),[0.1,0.5,0.9],'k');
contour(mu_true(:,1),mu_true(:,2),mvnpdf([xx(:),yy(:)],mu_true(2,:),sigma_true(:,:,2)),[0.1,0.5,0.9],'k');
title('EM算法计算混合高斯分布');
xlabel('x_1');
ylabel('x_2');
legend('数据','高斯分布均值','真实高斯分布1','真实高斯分布2');
```
其中,`mu_true`、`sigma_true`和`alpha_true`为真实的高斯分布的参数,`x`为生成的样本数据。在算法计算完成后,可以绘制样本数据和计算出的高斯分布的均值,以及真实高斯分布的轮廓线,以便比较它们的相似性。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![txt](https://img-home.csdnimg.cn/images/20241231045021.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)