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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
高斯混合模型里面的参数可以用到混核主元分析里面吗?有混合概率主元分析的EM算法的程序吗
) E$ Z1 u( L1 H" x6 lfunction ppca_mixture  1 \$ w2 \+ E9 M/ a2 y3 C' J/ V
filename = 'virus3.dat';7 S3 ~& p1 k; t, u
    T = importdata(filename);
3 j2 @! @: c- V0 G6 W+ z) A    [N, d] = size(T);
, J8 n; j: p2 p+ i# T    M = 3;  % number of ppca analysers considered 考虑的ppca分析仪数量2 A3 r- N3 F- _+ o% S8 [+ k
    q = 2;  % dimension of ppcas  ppca的维数6 R8 G- Y! X: x
    % init6 R& i# j  W, R& f& V
    % initializing the posteriors (p(i|t_n), indexed by (n, i). R in text)
% c& S. S& J2 l' _, Q: a    %初始化后验(p(i|t_n),在文本中由(n, i). R索引     
+ c6 {% W  B( q4 U    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];
. o0 v. |) M6 l% C9 `    for n=1:N9 y/ k/ y) N" f- n" F6 }9 b
        for i=1:M
: y. n- {1 j7 j- p+ T. j7 i7 p            if(i==classes(n))( X& ]. V# J4 a$ C4 P% t  s. p) M$ S
                posteriors(n, i) = 1;" V  E* T& }# `/ [3 `$ ]) F+ b
            else
. S; x7 U3 ?# R4 L: E* l5 X3 z                posteriors(n, i) = 0;
, {. o7 ^% X5 t" m            end/ Z' e% T6 u+ U& p3 K8 ~
        end% H3 i2 T$ _8 P
    end
5 q, g! J$ D; }    % precision for convergence checking 收敛检验精度9 H$ V. g4 ~7 {9 r" \' u
    epsilon = 0.01;8 E* I/ E1 x7 u( n) l- A
    entered = false;
) W4 t6 F% E2 R5 g; T0 h# W' `* r  h# |' ]7 T. g
    % loop
( s  y+ J1 o5 B* a1 o2 z    while(true)
! M, s) L0 w/ b0 q2 S0 Z9 l( W2 E/ ^        % updating priors (p(i), pi in text) and mean vectors (mu in text)  F: l. f' H$ b" c' {
        % 更新先验(p(i),文本中的pi)和平均向量(文本中的mu)" S( Z- q  V! E7 i# ]2 _- _5 K
        new_priors = 1/N * sum(posteriors);
3 o" S, U0 T. s) Q$ S7 w        new_mus = zeros(M, d);5 Z. O* X6 L5 I+ [
        for i=1:M( ~9 N, I. L/ p
            for n=1:N
5 x0 k1 t- H9 f* _8 L                new_mus(i, = new_mus(i, + posteriors(n, i) * T(n, ;
! c, k6 {6 x. J: h! T8 j, n6 @  ]            end( }) I4 m9 d, q5 o  a3 c+ r* s9 `
            new_mus(i, :) = new_mus(i, :) / sum(posteriors(:, i));8 l! `# X5 M. C2 ~1 r1 e: F
        end4 W. s/ M6 K; n

4 q6 j0 X5 {6 N# k+ x+ x$ x        % computing covariance matrices (S in text)计算协方差矩阵(文本中的S)
  P& Q2 _: w' P. t$ }. [        covariances = cell(M);0 H! _1 u* x& A( \7 L5 @
        for i=1:M) ~' D" ?, M; c) Y2 n% ?# l
            covariances{i} = zeros(d, d);: @; M: ?( U$ _5 x
            for n=1:N$ Y: p. h" J% n; N! _$ [! {7 U5 n1 a
                covariances{i} = covariances{i} + posteriors(n, i)*(T(n, :)' - new_mus(i, :)')*(T(n, :)' - new_mus(i, :)')';4 b4 e3 x! ?% V  p; U
            end
  k: w9 k: [! X' p            covariances{i} = covariances{i} / (new_priors(i) * N);
4 _" `3 m  w& H        end" R$ K1 O. k7 ]( ^; Z1 h9 k+ B/ r

# H& i; R: v, w: k' n% s
; g3 y3 w, s+ L+ h' r        % applying ppca using covariance matrices 使用协方差矩阵应用ppca
% v8 z( O' T6 e9 s! f5 U% d        % (Ws are weight matrices; sigmas are variances) (Ws为权重矩阵;(差异)
. Y4 a2 }# @6 |* }; q$ L: L: s        new_Ws = cell(M);8 h" q9 Q" ^1 \) b! U
        for i=1:M$ ^, ]: ]1 X3 y( R% y
            [new_Ws{i}, new_sigmas{i}] = ppca_from_covariance(covariances{i}, q);
6 {" x  {' o+ b) j( m$ @        end
& W  z. P8 s" Z3 K' Q- L
* L5 ~  Z9 ~" _, u, F: g        % convergence check 收敛性检查
+ [5 |- e4 d8 y& F+ {- J4 K4 \5 J( U  p        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)
7 \# D1 F# X" Z- N( `* ]1 l            break;
/ A9 \# g4 a8 }2 n6 c: ]        end3 U+ x- U' x. m
6 h( g, S) x$ F; @
        % replacing old parameter values 替换旧的参数值
9 {# O( g) I# H0 q) S" A$ W$ E        priors = new_priors;1 }  B' Z7 w# ]3 P: F/ [2 p
        mus = new_mus;. ~! F: \/ {( F& [8 A4 J
        Ws = new_Ws;7 u2 e5 ?. S, D+ F
        sigmas = new_sigmas;
" {' E) Z' ^; r9 p7 m: ]& `: ]) l( `4 E/ J: s
        % computing the likelihoods (p(t_n|i)) 计算概率(p(t_n|i))
  ]/ g2 z: z+ A' c' c& s+ f        for i=1:M
, `2 Q) a9 c3 C* U            C = sigmas{i}^2 * eye(d) + Ws{i}*Ws{i}';7 W! X2 |$ Y8 Z8 `; Z. s- ?4 v
            detC = det(C);( t8 A, B- Z( r3 z2 `( C
            invC = inv(C);) O! i! H8 f; y
            for n=1:N  c6 x/ [' r% b4 I. P( y0 P7 ]% u3 t
                likelihoods(n, i) = (2*pi)^(-d/2)*detC^(-1/2)*exp(-1/2*(T(n, :)' - mus(i, :)')'*invC*(T(n, :)' - mus(i, :)'));. F' b. y+ h; }. X. V+ @
            end
/ W( S. ]/ c: n& m( N' ?& z- ^8 q% v        end
5 ?# U4 K, r, E  R4 Q8 I        % computing the joint probabilities (p(t_n, i)) 计算联合概率(p(t_n, i))
& h, p5 G2 I  i- i# u2 M        for i=1:M4 I; [1 j( t- H9 m; p
            joint(:, i) = likelihoods(:, i) * priors(i);2 F) v# z$ {) ?9 b1 e
        end4 o1 {3 \8 [+ a/ ~: v0 m
        % computing the data priors (p(t_n)) 计算数据先验(p(t_n)), o) R" X1 f- K) @
        data_priors = sum(joint');
" r# F' `$ E. r  z. W3 K" `        % computing and displaying the likelihood of the data set 计算和显示数据集的可能性6 F) S( ?+ M0 w7 [
        disp(sum(log(data_priors)));
8 z1 ^$ _" N- D% P5 c6 @, \- v        % computing the posteriors (p(i|t_n), indexed by (n, i). R in text)
) Z6 x0 T1 J8 C* D        % 计算后验(p(i|t_n),用(n, i)索引。R在文本中)9 j7 V  D+ f7 x& @7 a+ ~; ]# v
        for n=1:N
  b- V  {5 j) X; I8 z- c            posteriors(n, :) = joint(n, :) / data_priors(n);
$ y: _  V6 M7 K1 u' P" [        end& l% I2 A) p; Y
/ V$ ~4 Y3 U8 P) w
        % we went through the loop at least once 我们至少做了一次循环  x* m; G, B& ^/ S- l5 X
        entered = true;2 M. Q( @8 W5 A6 v6 Z! p0 A  p/ @# c2 `
    end
3 U! n4 W$ w2 P( U$ o; R6 \+ R$ b  N) F7 s% z/ o- d3 n+ ^( X
% r8 z3 s. C5 Z4 z! X1 D1 `
    % computing the latent variables 计算潜变量- o% }  w, U0 J8 s. ]
    latent = cell(M);
% n4 P/ F4 w" y5 G    for i=1:M. U  q  H) S, U, m/ k4 v9 _+ I6 M
        latent{i} = ppca_latent(T, Ws{i}, sigmas(i));/ e. R  V5 N7 W( {4 S* H5 v
    end
* E9 f( B! k% L2 f5 M% @    % selecting likely points for each ppca analyser 为每个ppca分析器选择可能的点
6 K6 k) z) a6 a, Q6 i3 Q8 l    for n=1:N( E& J! y/ p( j$ `
        [~, i] = sort(posteriors(n, :), 'descend');
! T) u* m' @: g( p. Z        points_to_classes(n) = i(1);9 X- S+ H; f% I- _& j: e1 J5 Y* R  m
    end9 m- j/ j3 Z3 e
    classes_to_points = cell(M);1 Z+ _0 h# }9 y+ _: H8 x
    classes_to_point_numbers = cell(M);
' }6 |7 Z! ?( ]' y6 G    for n=1:N
$ l9 _# T" G& t" s* ^        classes_to_points{points_to_classes(n)}(:, end+1) = latent{points_to_classes(n)}(:, n);
6 F- l( z* z) X' J( O* {        classes_to_point_numbers{points_to_classes(n)}(end+1) = n;
6 ?8 l/ X' r& J+ Q    end9 r: h  ~% l* \% [* E

( Z, n. t) w2 m1 b& z    % display the results of the automatic classification 显示自动分类结果4 d+ e7 I6 l6 Z3 s) D. c
    for i=1:M+ Q* I+ o9 T  h7 [! g
        disp(classes_to_point_numbers{i});
  h$ F7 J. F1 x2 v" L% U    end
! g  `7 @8 r% c  x8 S( A9 i: P1 v; ?% @
    ppca_plot2d(classes_to_points{1});
7 K% d8 d, I3 _( Kend
" Q' X' m4 S* F, f* F8 r, u& p3 c$ n' ^

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-2 00:04 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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