【通过EM算法实现GMM学习的3D可视化】三维数据的高斯混合模型的 3D 可视化研究(Matlab代码实现)

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

通过EM算法实现GMM学习的3D可视化是一种将三维数据的高斯混合模型可视化的方法。该方法利用EM算法的迭代过程,通过在迭代之间进行插值,来展示GMM模型的演变。

在这个方法中,首先我们可以从一般协方差高斯簇中读取或生成三维数据。然后,选择所需的高斯数k,即欲拟合的高斯分量个数。接下来,我们将数据和初始高斯分布模型输入EM算法中进行迭代。

在每次迭代期间,真实的GMM模型仅在迭代的锚帧上可用。为了展示GMM的演变,我们通过在这些锚帧之间插值足够多的“帧”来给出3D高斯的运动错觉。这里,将每个高斯分量的均值表示为3D空间中的一个点,并使用标准偏差作为椭球体的尺寸来表示高斯分布的扩散。通过插值得到的帧数足够多,可以形成一个流畅的动画演示,展示GMM模型在EM算法迭代过程中的变化。

这种基于EM算法的3D可视化方法可以帮助我们更好地理解GMM模型在拟合数据时的行为和演变过程。通过观察高斯分布的运动轨迹和变化趋势,我们可以看到模型是如何从初始状态逐步收敛并拟合数据的。这对于解释聚类结果和模型参数的选择具有重要意义,同时也可以用于发现数据中的潜在结构和模式。

通过EM算法实现GMM学习的3D可视化方法提供了一种直观的方式来展示GMM模型在拟合三维数据时的变化和形态,帮助我们更好地理解和分析数据。

📚2 运行结果

部分代码:

%% 3D visualization of EM for GMMs
% function X = EM_GMM_3d(c,wk,N,movie,Y,D,Cv)
%
% Inputs: c      - # clusters (default: 5)
%         wk     - array of # gaussians to fit (default: 1:10)
%         N      - # GMM samples (default: 200)
%         movie  - string: writes .avi for each k (default: [])
%         Y      - NxD data matrix (default: generate new data)
%         D      - data dimensionality (default: 3)
%         Cv     - covariance type (0: diag, 1: full) (default: full)
% Output: X      - NxD data matrix
%
% How it works:
%   For each value of k in 'wk':
%    - Fit GMM with EM
%    - Interpolate model params between EM iterations
%    - Coloring: Gaussians - transparency = GMM mixing weights
%                data      - color blend = posterior probs
%    - Play movie of EM learning
%    - (optional) Save movie to .avi file
%
% Author: Johannes Traa, UIUC, Nov-Dec '11
% 
% Revised Mar '13 (cleaned up code, added full covariance capability)


%% check input args
if nargin < 1 || isempty(c);  c  = 5;    end
if nargin < 2 || isempty(wk); wk = 1:10; end
if nargin < 3 || isempty(N);  N  = 200;  end
if nargin < 4 || isempty(movie)
  m_val = 0;
  set(0,'DefaultFigureWindowStyle','docked')
else
  m_val = 1;
  set(0,'DefaultFigureWindowStyle','normal')
  if ~ischar(movie)
    movie = 'EM_k';
  end
end
if nargin < 6 || isempty(D);  D  = 3; end
if nargin < 7 || isempty(Cv); Cv = 1; end

%% get data
if ~(nargin<5 || isempty(Y))
  X = Y;
  [N,D] = size(X);
else
  % GMM params
  m = 10*randn(c,D); % means
  C = zeros(D,D,c); % covariance matrices
  for j=1:c
    Cj = randn(D,10);
    C(:,:,j) = Cj*Cj';
  end
  w = dirrand(3*ones(1,c),1); % mixing weights
  
  % sample from GMM

%% 3D visualization of EM for GMMs
% function X = EM_GMM_3d(c,wk,N,movie,Y,D,Cv)
%
% Inputs: c      - # clusters (default: 5)
%         wk     - array of # gaussians to fit (default: 1:10)
%         N      - # GMM samples (default: 200)
%         movie  - string: writes .avi for each k (default: [])
%         Y      - NxD data matrix (default: generate new data)
%         D      - data dimensionality (default: 3)
%         Cv     - covariance type (0: diag, 1: full) (default: full)
% Output: X      - NxD data matrix
%
% How it works:
%   For each value of k in 'wk':
%    - Fit GMM with EM
%    - Interpolate model params between EM iterations
%    - Coloring: Gaussians - transparency = GMM mixing weights
%                data      - color blend = posterior probs
%    - Play movie of EM learning
%    - (optional) Save movie to .avi file
%
% Author: Johannes Traa, UIUC, Nov-Dec '11

% Revised Mar '13 (cleaned up code, added full covariance capability)


%% check input args
if nargin < 1 || isempty(c);  c  = 5;    end
if nargin < 2 || isempty(wk); wk = 1:10; end
if nargin < 3 || isempty(N);  N  = 200;  end
if nargin < 4 || isempty(movie)
  m_val = 0;
  set(0,'DefaultFigureWindowStyle','docked')
else
  m_val = 1;
  set(0,'DefaultFigureWindowStyle','normal')
  if ~ischar(movie)
    movie = 'EM_k';
  end
end
if nargin < 6 || isempty(D);  D  = 3; end
if nargin < 7 || isempty(Cv); Cv = 1; end

%% get data
if ~(nargin<5 || isempty(Y))
  X = Y;
  [N,D] = size(X);
else
  % GMM params
  m = 10*randn(c,D); % means
  C = zeros(D,D,c); % covariance matrices
  for j=1:c
    Cj = randn(D,10);
    C(:,:,j) = Cj*Cj';
  end
  w = dirrand(3*ones(1,c),1); % mixing weights
  
  % sample from GMM

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]岳佳.基于EM算法的模型聚类的研究及应用[D].江南大学[2023-10-06].DOI:10.7666/d.y1195438.

[2]张华幸,李华雄,黄兵,等.基于高斯混合模型和EM算法的序贯三支决策方法[J].山西大学学报(自然科学版), 2020(004):043.

[3]王维彬,钟润添.一种基于贪心EM算法学习GMM的聚类算法[J].计算机仿真, 2007, 24(2):4.DOI:10.3969/j.issn.1006-9348.2007.02.018.

🌈4 Matlab代码实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值