?? mlgauss.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;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -