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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
高斯混合模型里面的参数可以用到混核主元分析里面吗?有混合概率主元分析的EM算法的程序吗
! r1 i2 G7 u/ ~- B0 ofunction ppca_mixture  0 g* ?5 T+ X9 Z0 s9 ?
filename = 'virus3.dat';
3 Q# d' U! N+ T+ u    T = importdata(filename);
! j* B5 J; k6 T* M0 e: j    [N, d] = size(T);
# @; j, ^+ {8 B( `- Y6 q    M = 3;  % number of ppca analysers considered 考虑的ppca分析仪数量
2 c4 ^' M! f1 \+ J1 Q; b  Q    q = 2;  % dimension of ppcas  ppca的维数
' \2 O. u' g1 p" T! O0 s% A1 l# W3 V    % init/ G+ k6 y  U6 l: l4 j
    % initializing the posteriors (p(i|t_n), indexed by (n, i). R in text)
. O' ^- J$ Q9 W9 t    %初始化后验(p(i|t_n),在文本中由(n, i). R索引     
, z9 ]. H; X/ p* \0 c# t    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];: _  i$ ]; i! R
    for n=1:N* Y1 n/ f2 u' v# O6 l' q1 ~5 t
        for i=1:M
, B. |# z2 T+ h3 [' b/ o            if(i==classes(n))
0 H" ?7 T2 r4 J. ?" Z2 r3 \                posteriors(n, i) = 1;" B$ u  K; Y9 p  t6 w  l  {1 t
            else
- s' c% n9 D7 Q5 X4 c9 C                posteriors(n, i) = 0;6 I7 X0 _+ N' [& \. K8 N1 [. ?
            end
) [7 d" G8 W! z0 K- J- h; A) A0 I        end" G; F2 E  u3 r/ {0 ?1 z' M- s9 \
    end* Z& ~$ U4 k3 L( t& C8 z: a1 p# u( m+ F
    % precision for convergence checking 收敛检验精度
) N* E$ x. y( k2 `' K    epsilon = 0.01;
3 d7 t9 d; T0 `2 F) P* M# p    entered = false;
! V) M5 ~2 v* _. e
/ O* q3 S  b  z! @. j$ \. T7 j  g    % loop
5 L% s5 w. ?  W& r! f    while(true)* S3 s/ L. y8 e. N3 z/ }
        % updating priors (p(i), pi in text) and mean vectors (mu in text)( ]. |# s; U! {
        % 更新先验(p(i),文本中的pi)和平均向量(文本中的mu)7 \* F7 O+ ~8 o- `
        new_priors = 1/N * sum(posteriors);+ Z( ]7 f7 E5 C7 [# K, @
        new_mus = zeros(M, d);
# q2 N- W! y5 f* |4 f        for i=1:M* R$ f, |3 V/ q
            for n=1:N
' Q' G# e, l: E$ v/ _& e                new_mus(i, = new_mus(i, + posteriors(n, i) * T(n, ;" p2 D1 ]2 n5 Y1 d. `# Y) E
            end) E; h+ i6 d- T: n9 l8 G) L
            new_mus(i, :) = new_mus(i, :) / sum(posteriors(:, i));! E% ]" W+ z! t8 t9 g* A2 @4 `
        end! B" G8 r5 d( Q2 S
$ L' O  b; h7 G
        % computing covariance matrices (S in text)计算协方差矩阵(文本中的S)" @. Q6 B6 m( {5 [0 K/ I
        covariances = cell(M);" e+ H) M' z2 T# D$ @
        for i=1:M# L7 l! f: n: L6 s
            covariances{i} = zeros(d, d);
6 B: G2 w! Z/ |5 z  r0 c, a            for n=1:N" _! y$ i4 j# x
                covariances{i} = covariances{i} + posteriors(n, i)*(T(n, :)' - new_mus(i, :)')*(T(n, :)' - new_mus(i, :)')';
, g9 ]7 D) D, C- i3 B2 A            end
$ j' R, V( x% O* L- h0 q            covariances{i} = covariances{i} / (new_priors(i) * N);, A( ]+ ]' J5 E$ F& A
        end; ^8 k5 M0 P; C; S

) R7 j9 z! [. D9 S& m, `1 c, Y: t* F( T
        % applying ppca using covariance matrices 使用协方差矩阵应用ppca
; `! |, G6 W5 i        % (Ws are weight matrices; sigmas are variances) (Ws为权重矩阵;(差异)/ k4 N6 z+ S+ E# q
        new_Ws = cell(M);/ R1 o3 I( b5 q/ l5 b
        for i=1:M" b, D" G7 p9 V) m5 y
            [new_Ws{i}, new_sigmas{i}] = ppca_from_covariance(covariances{i}, q);
6 N( O0 @( T9 S# E& \4 D. D        end5 g, ~9 L2 G! Y) x) q

6 ~) A5 H& _' Y8 Z2 r        % convergence check 收敛性检查
0 n# Z  v% U8 e+ P2 Y        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)! a% o: u: q3 j
            break;
! P' r$ a* w/ {        end+ a& D* E7 y. _9 T0 |

6 z+ c! R2 U4 q9 _' Y) W! M( j' C        % replacing old parameter values 替换旧的参数值
0 [. h  s/ j  s$ ?5 j        priors = new_priors;* B) T5 v* U/ S
        mus = new_mus;
/ R/ W- Z( D! Q" |        Ws = new_Ws;
5 j$ i3 M' f$ b9 a+ Y  K2 X        sigmas = new_sigmas;- f% e% Q' A0 H) G) }3 T) m

4 A$ m% W7 z4 Q; D$ I        % computing the likelihoods (p(t_n|i)) 计算概率(p(t_n|i))# a/ n2 @  N9 d: m5 |
        for i=1:M- R! t" u$ K$ X- \/ k
            C = sigmas{i}^2 * eye(d) + Ws{i}*Ws{i}';
" a: G! f2 B: |' A8 w5 [. K* o- q. Y8 k& n            detC = det(C);9 z- P7 P) w9 K- D* \+ P8 C% \) x
            invC = inv(C);
: c" q' j+ H* P8 W            for n=1:N# X9 ~4 p0 p% a) z5 ^
                likelihoods(n, i) = (2*pi)^(-d/2)*detC^(-1/2)*exp(-1/2*(T(n, :)' - mus(i, :)')'*invC*(T(n, :)' - mus(i, :)'));
3 Z% a! g* k: \% v            end- c2 e8 G  L0 q! ~1 A- U* t
        end& Y# |+ e) [7 D, F2 K
        % computing the joint probabilities (p(t_n, i)) 计算联合概率(p(t_n, i))' ~) |* e/ w9 R0 Z. E+ H. R3 \* j
        for i=1:M- |" {, ~7 o. g1 S1 u+ F$ S
            joint(:, i) = likelihoods(:, i) * priors(i);  C# ^8 E' j/ q( o
        end  C5 ~: ?. Z/ w5 ^
        % computing the data priors (p(t_n)) 计算数据先验(p(t_n))5 P+ H) B  v$ b! a. n& J
        data_priors = sum(joint');
$ l- y& f$ X# |; o! e7 u5 B- K0 C+ i* y        % computing and displaying the likelihood of the data set 计算和显示数据集的可能性
$ k; S2 o+ W5 B: h: a        disp(sum(log(data_priors)));+ a  J( B$ o% D0 w$ M- |) k0 b
        % computing the posteriors (p(i|t_n), indexed by (n, i). R in text)
2 Y7 p$ `1 {, ~& ?" n8 j  F1 R7 L        % 计算后验(p(i|t_n),用(n, i)索引。R在文本中)* Y: H* I( i8 Q9 Y
        for n=1:N) @0 [- o; t- ]6 S0 z
            posteriors(n, :) = joint(n, :) / data_priors(n);
- L( C2 x4 l& {: O" V/ I# q        end
' g/ G/ G6 J: m) o2 y) ]+ x2 X  }, G, T! N( \' j
        % we went through the loop at least once 我们至少做了一次循环- a& @6 K. t! H1 m( L% U8 {. i
        entered = true;) R$ I6 s  ?: ^$ p, _% j- @7 ^
    end5 u$ l1 L' k" K! J( D0 W7 \

) {. x! `: f, |" T/ i
7 k, S/ v; K' |6 e2 [* U: ?    % computing the latent variables 计算潜变量7 l: q% H2 q( _( F
    latent = cell(M);; }: y! q8 j! M0 i6 ]1 E
    for i=1:M
0 C5 z& W6 V+ e6 v8 r        latent{i} = ppca_latent(T, Ws{i}, sigmas(i));
2 g( V5 K9 O5 ~2 s    end
' f+ u) u6 {2 B    % selecting likely points for each ppca analyser 为每个ppca分析器选择可能的点' @8 u9 B3 J6 ?9 @! i0 s$ h
    for n=1:N
" A% Q5 t/ E- m5 ]9 z        [~, i] = sort(posteriors(n, :), 'descend');+ U3 v, E5 o, ~* U2 {( s  i/ Q0 C
        points_to_classes(n) = i(1);# g; c) L( b+ A2 \' J
    end) n+ p! l2 h& e& m1 A5 I6 W$ X
    classes_to_points = cell(M);8 b% N" Y' \8 O- I0 W$ v9 S
    classes_to_point_numbers = cell(M);
' E+ k7 U) ^2 c& F; s- O6 d# t5 u    for n=1:N
2 a' x  ~2 ^! w+ v' y        classes_to_points{points_to_classes(n)}(:, end+1) = latent{points_to_classes(n)}(:, n);, \+ |$ Y/ X3 W
        classes_to_point_numbers{points_to_classes(n)}(end+1) = n;
( M$ K: K+ Z# r    end
) @( W4 K( @' S1 Q
" T" ~( A4 C0 e: A* B    % display the results of the automatic classification 显示自动分类结果
+ R( u6 r3 o0 I/ ]0 `( G    for i=1:M
+ m  b9 {6 v1 b* l        disp(classes_to_point_numbers{i});6 D& s. A) u* M6 @9 \0 u: n3 \
    end
" ~' m4 v/ @: }9 t0 X; l( N, B2 g
4 Y8 |* a- a7 R/ g7 o" V0 @    ppca_plot2d(classes_to_points{1});2 z+ `; W- j6 |
end
/ [$ H+ m: Y; c8 ?0 |$ F

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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