⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mlgauss.m

📁 patten regnization source从1-14章能运行
💻 M
字号:
function model=mlgauss(data,cov_type)
% MLGAUSS绰 弥快眠沥栏肺 林绢柳 单捞磐俊 措茄 啊快矫救 盒器甫 拌魂茄促. 
% 
% 荤侩过:
%  model=mlgauss(data)
%  model=mlgauss(data,cov_type)
% 
% 汲疙:
%  林绢柳 单捞磐俊 措茄 啊快矫救 盒器狼 弥快眠沥阑 拌魂茄促. 
%  ML 眠沥篮 促澜 荐侥阑 仟绰 巴苞 鞍促:
%    (mu^*,C^*)=arg max sum Alpha(x)*log( N(x,mu,C) )
%                        mu,C   x
%  
%  咯扁辑 钎夯 X绰 i.i.d. 扼绊 啊沥茄促. 
%
%  Alpha(x)绰 钎夯俊辑 钎夯 x狼 惯积阑 搬沥茄促. (荤傈 犬伏)  
%  叼弃飘绰 葛电 单捞磐俊 措窍咯 1捞促. 捞矾茄 单捞磐 啊吝篮 抗甫 甸绢
%  舅绊府硫俊辑 肯傈茄 快档 窃荐甫 眠沥窍咯 拌魂且 锭 蜡侩茄促. 
%
%  涝仿 牢荐 单捞磐绰 促澜吝 窍唱啊 瞪 荐 乐促.  
%   1) 钎夯 X甫 器窃窍绰 青纺 [dim x num_data] 
%   2) 基敲 X [dim x num_data],扼骇 y [1 x num_data] 
%           弊府绊 啊吝蔼 Alpha [1 x num_data]甫 器窃窍绰 备炼眉 
%      父距, 扼骇捞 林绢柳促搁 ML 眠沥篮 漂喊洒 阿 努贰胶俊 措窍咯 荐青等促.   
%
%  眠沥登绰 傍盒魂 青纺狼 屈怕绰 促澜苞 鞍篮 巴捞 瞪 荐 乐促:
%     1 ... 肯傈 傍盒魂 青纺(Full covariance matrix)
%     2 ... 措阿 傍盒魂 青纺(Diagonal covariance matrix)
%     3 ... Cov. matrix c*eye(dim,dim). eye(dim,dim): 亲殿青纺
%
% 涝仿 :
%  data [dim x num_data] Data sample.
%  趣篮 
%  data.X [dim x num_data] 单捞磐 基敲.
%  data.y [1 x num_data] 扼骇 (default ones(1,num_data)).
%  data.Alpha [1 x num_data] 单捞磐狼 啊吝蔼 (default ones(1,num_data)).
%
%  cov_type [int] 傍盒魂 青纺狼 屈怕 (defualt 1).
%
% 免仿 :
%  model.Mu [dim x num_classes] 眠沥等 乞闭 氦磐.
%  model.C [dim x dim x num_classes] 眠沥等 傍盒魂 青纺.
%
% Example:
%  help mmgauss;
%
% See also MMGAUSS.
%
% -- Processing of input arguments -----------------------------------

data=c2s(data);

if ~isstruct(data),
   data.X = data;
end

[dim, num_data] = size( data.X );

if ~isfield(data,'y'), data.y = ones(1,num_data); end
if ~isfield(data,'Alpha'), data.Alpha = ones(1,num_data); end

if nargin < 2, cov_type=1; end
  
% -- compute ML estimated for all classes ------
num_classes=max(data.y);

model.Mu = zeros(dim,num_classes);
model.C = zeros(dim,dim,num_classes);

for i=1:num_classes,
   
   inx = find(data.y==i);
   
   Alpha=data.Alpha(inx); Alpha=Alpha(:);
   sum_Alpha = sum(Alpha);
   X = data.X(:,inx);
   num_data = size(X,2);
   
   %------------------------------   
   model.Mu(:,i) = X*Alpha/sum_Alpha;
   
   XC=X-repmat( model.Mu(:,i),1,num_data);

  if cov_type==1,
    % asssumes correlated features
    model.C(:,:,i) = (XC.*(repmat(Alpha',dim,1)))*XC'/(sum_Alpha);
  elseif cov_type==2,
    % asssumes uncorrelated features -> diagonal cov. matrix
    model.C(:,:,i) = diag(sum((XC.*repmat(Alpha',dim,1).*XC)')/(sum_Alpha));
  else
    % asssumes isotropic cov. -> diagonal cov. = c*eye()
    model.C(:,:,i) = eye(dim,dim)*...
      sum(sum((XC.*repmat(Alpha',dim,1).*XC)'))/((sum_Alpha)*dim);
  end
end

model.cov_type = cov_type;
model.y = [1:num_classes];

return; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -