GMM混合高斯模型matlab程序
时间: 2024-04-02 19:29:54 浏览: 109
GMM(Gaussian Mixture Model)是一种常用的概率模型,用于对数据进行聚类或密度估计。在Matlab中,可以使用Statistics and Machine Learning Toolbox中的gmdistribution函数来实现GMM。
以下是一个简单的示例程序,用于使用GMM对数据进行聚类:
```matlab
% 生成示例数据
rng(1); % 设置随机数种子,保证结果可重复
data = [mvnrnd([1, 2], [1, 0.5; 0.5, 2], 100); mvnrnd([4, 6], [1, -0.5; -0.5, 2], 100)];
% 使用GMM进行聚类
k = 2; % 聚类的数量
gmm = fitgmdist(data, k); % 拟合GMM模型
% 绘制聚类结果
figure;
hold on;
scatter(data(:, 1), data(:, 2), 'filled');
ezcontour(@(x, y)pdf(gmm, [x, y]), [min(data(:, 1))-1, max(data(:, 1))+1, min(data(:, 2))-1, max(data(:, 2))+1]);
title('GMM聚类结果');
xlabel('x');
ylabel('y');
legend('数据点', 'GMM边界');
% 打印每个聚类的均值和协方差矩阵
for i = 1:k
fprintf('聚类 %d 的均值:\n', i);
disp(gmm.mu(i, :));
fprintf('聚类 %d 的协方差矩阵:\n', i);
disp(gmm.Sigma(:, :, i));
end
```
这段程序首先生成了一个示例数据集,然后使用fitgmdist函数拟合GMM模型。最后,绘制了数据点和GMM模型的边界,并打印了每个聚类的均值和协方差矩阵。
阅读全文