找回密码
 注册
关于网站域名变更的通知
查看: 524|回复: 3
打印 上一主题 下一主题

高斯混合模型里面的参数可以用到混核主元分析里面吗?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-12-24 11:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
高斯混合模型里面的参数可以用到混核主元分析里面吗?有混合概率主元分析的EM算法的程序吗
( V& Y2 S5 k0 \( ofunction ppca_mixture  
3 c5 S" P4 p  X0 Pfilename = 'virus3.dat';- [" ^8 P2 I# @- C  Z
    T = importdata(filename);
/ e* ^8 V0 j& @, w5 t# m    [N, d] = size(T);) b3 Q) ~' U; X0 E, M6 S6 o) Y
    M = 3;  % number of ppca analysers considered 考虑的ppca分析仪数量
1 C! d$ b$ n! l0 u  f3 m" O    q = 2;  % dimension of ppcas  ppca的维数+ T1 |, c4 u# N! T; O
    % init
: h) u- E: e" q6 B* I% d& N    % initializing the posteriors (p(i|t_n), indexed by (n, i). R in text)' Y/ n* _3 }$ Q& S& f* R' k
    %初始化后验(p(i|t_n),在文本中由(n, i). R索引     
; J* w5 x5 ?1 x% g% |. p    classes = [3, 3, 3, 3, 2, 2, 3, 1, 3, 3, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2];
. g0 t  M2 {& v7 g0 L8 k    for n=1:N% \3 F0 X5 ?8 n" b" K& h" _
        for i=1:M& C6 T7 I3 P, i3 s  L
            if(i==classes(n))
3 J# L6 s4 v7 L( L$ Z+ ^                posteriors(n, i) = 1;
5 p% {( z5 l- N: Y  r            else2 S$ q) d1 o- i+ N+ y
                posteriors(n, i) = 0;0 g  b5 K* e- M( M4 T5 F
            end
* _: F4 F' M7 F' k* J3 i, T        end, x0 L" ~( U5 `1 L% f
    end
) D  G8 T2 t7 ]5 @- |    % precision for convergence checking 收敛检验精度
  J; T5 @0 o8 s3 ?) K    epsilon = 0.01;
* X! s' S/ x2 h3 F    entered = false;
9 q1 i! {7 d& x7 L' b
% r% ~  G9 G; Q8 _; [" _; W    % loop6 D1 W" d$ N. e7 S+ g! [; d
    while(true)+ C: i# ]  p' c( c" V' n0 Y
        % updating priors (p(i), pi in text) and mean vectors (mu in text)" z. f# y& \" t' {/ U) ^
        % 更新先验(p(i),文本中的pi)和平均向量(文本中的mu)
$ x2 H! _( f* Y        new_priors = 1/N * sum(posteriors);0 B  e5 z0 F9 z2 C7 d
        new_mus = zeros(M, d);: k; F* z+ \4 g( e: E5 ^: |8 m
        for i=1:M$ s4 r/ U. T0 s$ u
            for n=1:N$ H) {( i( s  C' C4 B
                new_mus(i, = new_mus(i, + posteriors(n, i) * T(n, ;
7 D* P8 w/ Q. w6 T8 {( ], {            end
- ~# J: c# c. r: B4 R            new_mus(i, :) = new_mus(i, :) / sum(posteriors(:, i));
! v  Y7 s1 u* N& W        end$ o$ w! o' S2 f' P0 c9 ]

+ G" x  `5 q$ W0 l/ u4 K( U        % computing covariance matrices (S in text)计算协方差矩阵(文本中的S)# W4 j! Y6 D+ i4 ^
        covariances = cell(M);  W- G, |) _# Q9 k
        for i=1:M
2 A# m0 B, g7 s, s" e            covariances{i} = zeros(d, d);
5 S* v0 ?' z; g8 r& F" K+ i! V            for n=1:N0 q" C; F3 m9 _# L! |* t- y
                covariances{i} = covariances{i} + posteriors(n, i)*(T(n, :)' - new_mus(i, :)')*(T(n, :)' - new_mus(i, :)')';
/ P( ^% t6 e. G  m4 y+ s  H            end- _# z% R1 I: ]. H+ q! t' l4 }
            covariances{i} = covariances{i} / (new_priors(i) * N);) r, T$ R2 O2 o, k
        end) u- h! I& n- h5 m  b- _, {
; W1 b6 _' m+ B) F' }
0 H/ [( Q; S9 ?. y  y- N
        % applying ppca using covariance matrices 使用协方差矩阵应用ppca, W+ A6 d8 r8 i3 c# r
        % (Ws are weight matrices; sigmas are variances) (Ws为权重矩阵;(差异)% P9 N( p7 j( C
        new_Ws = cell(M);
9 [# l2 j% ^6 c) N& P. k9 K# Q        for i=1:M
  O( u6 p1 {8 e8 M; n5 e$ f; p            [new_Ws{i}, new_sigmas{i}] = ppca_from_covariance(covariances{i}, q);; [/ i- h( |) F; W
        end- Y8 k- W+ T' E; ]' n4 j0 [9 N& w
' F5 C" O3 O! o( E- ^
        % convergence check 收敛性检查
  x; L. R; C1 `9 o+ C, F        if(entered && max(abs(new_priors - priors)) < epsilon && max(max(abs(new_mus - mus))) < epsilon && max(max(max(abs(cell2mat(new_Ws) - cell2mat(Ws))))) < epsilon && max(abs(new_sigmas - sigmas)) < epsilon)' p: I5 a4 ^1 y6 q! ?6 C
            break;
! f! o0 A- Y: g/ n( X        end
7 n7 B1 q% V: _( n; a' V- A6 B$ a1 z' V9 D( p8 d
        % replacing old parameter values 替换旧的参数值
4 ?! M; n/ O6 E$ `        priors = new_priors;9 J+ `; c9 g. c4 \. N' W
        mus = new_mus;
7 O1 ~; B+ a5 \8 B        Ws = new_Ws;$ ~) b/ `' C% u
        sigmas = new_sigmas;
' m5 H7 B7 g" f( \/ i1 W
0 X5 V/ F+ J' Z" t$ _" b1 v) p' M" k        % computing the likelihoods (p(t_n|i)) 计算概率(p(t_n|i))
! K9 t! j  l: W. [* t# l        for i=1:M
3 A3 M! i1 |5 `            C = sigmas{i}^2 * eye(d) + Ws{i}*Ws{i}';
! w) i  c+ h& b            detC = det(C);
* {, Y0 R, b" g& c3 _$ r            invC = inv(C);
/ ]+ _" z2 I; I; @            for n=1:N
3 i- Q/ l) x) k                likelihoods(n, i) = (2*pi)^(-d/2)*detC^(-1/2)*exp(-1/2*(T(n, :)' - mus(i, :)')'*invC*(T(n, :)' - mus(i, :)'));& R, x* \% R  \8 f
            end
8 V9 V9 ~/ t( r1 e; N+ d        end
* w2 g# e" F# G3 v+ z3 C/ {        % computing the joint probabilities (p(t_n, i)) 计算联合概率(p(t_n, i)). x+ y7 M7 s3 Y, m" u3 N
        for i=1:M
5 i4 ^/ T2 j0 Q* p4 u& o            joint(:, i) = likelihoods(:, i) * priors(i);, T6 q3 u) l" P  F; d& _' R% Q. X
        end/ Q1 U  e1 }$ F: v$ v
        % computing the data priors (p(t_n)) 计算数据先验(p(t_n))& ]: ^2 _% R" n& l7 A+ K6 r
        data_priors = sum(joint');
1 i$ N# R& w% V% ]5 t* b        % computing and displaying the likelihood of the data set 计算和显示数据集的可能性
8 Y$ r1 q) j& u5 E# c        disp(sum(log(data_priors)));! T) }6 \( g  A* ^# i
        % computing the posteriors (p(i|t_n), indexed by (n, i). R in text)
4 ]! l9 k: A. \5 }        % 计算后验(p(i|t_n),用(n, i)索引。R在文本中)0 s4 M# B4 ?+ m& W
        for n=1:N- B& X  K+ Q$ w- q/ S2 z' `
            posteriors(n, :) = joint(n, :) / data_priors(n);. `7 Z3 p5 q) k0 A% L! N4 d! X
        end8 @8 g. v" B6 @* C- y3 @1 v
! o* s2 T# g' J/ n
        % we went through the loop at least once 我们至少做了一次循环. y5 `7 v& C0 N: X, F+ y3 u( c
        entered = true;
; D: F, a  p$ }% H8 L3 S- v    end3 h- z. W3 \5 D: W

# d$ Z  S6 z& D1 X  M4 S8 w  U0 e9 }3 N) ]2 D* t4 w. x
    % computing the latent variables 计算潜变量
4 S& F# ~! t0 R+ S3 U    latent = cell(M);* H; ?  Q" c( Q/ u' i% ~8 t
    for i=1:M! G/ |! W8 @/ H/ O" C* J
        latent{i} = ppca_latent(T, Ws{i}, sigmas(i));& n# Z8 c/ _5 u
    end* H1 h/ V% @" p
    % selecting likely points for each ppca analyser 为每个ppca分析器选择可能的点) Y$ Z3 O# K( x9 R) @
    for n=1:N
$ R: A: l) t6 E3 A$ p* ^$ E        [~, i] = sort(posteriors(n, :), 'descend');. a6 ]* S3 ^: n1 {  t
        points_to_classes(n) = i(1);
4 F- @" [6 P6 ?$ V% _& F9 W7 m# F    end
' }+ l, |; }& C    classes_to_points = cell(M);
; P8 A; J4 ]' Y, I% \* N. {    classes_to_point_numbers = cell(M);
) T# ^5 T7 M8 j1 `6 q" K    for n=1:N
  E1 k9 b3 `1 M0 H. w: Y        classes_to_points{points_to_classes(n)}(:, end+1) = latent{points_to_classes(n)}(:, n);
* ^8 Z" M0 g3 y  w+ d! W6 ?1 [8 h        classes_to_point_numbers{points_to_classes(n)}(end+1) = n;
! ^) S+ e1 q, V  u5 b- ~8 H) A    end
+ b8 R& U3 ~5 r/ H9 J
! V. t' [: t! B, R& e) T6 U# C    % display the results of the automatic classification 显示自动分类结果6 f8 b+ R  q/ ?# A3 `5 d& Q4 f1 \
    for i=1:M
5 v! R6 a" q- S* n5 Z' A! W, w1 G        disp(classes_to_point_numbers{i});
9 G5 g, {  r8 Q) q6 T3 L    end
  ?3 {- O8 N( x9 ^
9 P8 E9 H- e3 u( L9 S. i. v    ppca_plot2d(classes_to_points{1});
% g8 P# b- N$ C* T1 Rend1 B. _% N! H# m0 Y

该用户从未签到

2#
发表于 2020-12-24 13:13 | 只看该作者
帮你顶一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 01:24 , Processed in 0.140625 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表