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

📄 mogc.m

📁 The pattern recognition matlab toolbox
💻 M
字号:
%MOGC Mixture of Gaussian classifier%%   W = MOGC(A,N)%   W = A*MOGC([],N);%%	INPUT%    A   Dataset%    N   Number of mixtures (optional; default 2)%    R,S Regularization parameters, 0 <= R,S <= 1, see QDC%	OUTPUT%% DESCRIPTION% For each class j in A a density estimate is made by GAUSSM, using N(j)% mixture components. Using the class prior probabilities they are combined % into a single classifier W. If N is a scalar, this number is applied to % each class. The relative size of the components is stored in W.DATA.PRIOR.%% EXAMPLES% PREX_DENSITY%% SEE ALSO% DATASETS, MAPPINGS, QDC, PLOTM, TESTC% Copyright: R.P.W. Duin, duin@ph.tn.tudelft.nl% Faculty of Applied Sciences, Delft University of Technology% P.O. Box 5046, 2600 GA Delft, The Netherlands% $Id: mogc.m,v 1.4 2007/04/21 23:04:38 duin Exp $function w = mogc(a,n,r,s);	prtrace(mfilename);	if nargin < 4, s = 0; end	if nargin < 3, r = 0; end	if nargin < 2, n = 2; end	if nargin < 1 | isempty(a)		w = mapping(mfilename,{n,r,s});		w = setname(w,'MoG Classifier');		return	end		islabtype(a,'crisp','soft');	isvaldfile(a,n,2); % at least n objects per class, 2 classes		% Initialize all the parameters:	a = testdatasize(a);	a = testdatasize(a,'features');	[m,k,c] = getsize(a);	p = getprior(a);	a = setprior(a,p);	if length(n) == 1		n = repmat(n,1,c);	end    	if length(n) ~= c		error('Numbers of components does not match number of classes')	end	w = [];	d.mean = zeros(sum(n),k);	d.cov = zeros(k,k,sum(n));	d.prior = zeros(1,sum(n));	d.nlab = zeros(1,sum(n));	d.det = zeros(1,sum(n));	if(any(classsizes(a)<n))		error('One or more class sizes too small for desired number of components')	end	% Estimate a MOG for each of the classes:	w = [];	n1 = 1;	for j=1:c		n2 = n1 + n(j) - 1;		b = seldat(a,j);		%b = setlabtype(b,'soft');		v = gaussm(b,n(j),r,s);		d.mean(n1:n2,:) = v.data.mean;		d.cov(:,:,n1:n2)= v.data.cov;		d.prior(n1:n2)  = v.data.prior*p(j);		d.nlab(n1:n2)   = j;		d.det(n1:n2)    = v.data.det;		n1 = n2+1;	end		w = mapping('normal_map','trained',d,getlablist(a),k,c);	%w = normal_map(d,getlablist(a),k,c);	w = setname(w,'MoG Classifier');	w = setcost(w,a);	return;

⌨️ 快捷键说明

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