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

📄 chernoffm.m

📁 这是我找到的一个模式识别工具箱
💻 M
字号:
%CHERNOFFM Suboptimal discrimination linear mapping (Chernoff mapping)%%	W = CHERNOFFM(A,N,R)% % INPUT%	A   Dataset%	N   Number of dimensions to map to, N < C, where C is the number of classes%	    (default: min(C,K)-1, where K is the number of features in A)%	R   Regularization variable, 0 <= r <= 1, default is r = 0, for r = 1 the %	    Chernoff mapping is (should be) equal to the Fisher mapping%% OUTPUT% 	W   Chernoff mapping%% DESCRIPTION  % Finds a mapping of the labeled dataset A onto an N-dimensional linear% subspace such that it maximizes the heteroscedastic Chernoff criterion% (also called the Chernoff mapping).%% REFERENCE% M. Loog and R.P.W. Duin, Linear Dimensionality Reduction via a Heteroscedastic% Extension of LDA: The Chernoff Criterion, IEEE Transactions on pattern% analysis and machine intelligence, vol. PAMI-26, no. 6, 2004, 732-739.%% SEE ALSO% MAPPINGS, DATASETS, FISHERM, NLFISHERM, KLM, PCA% Copyright: M. Loog, marco@isi.uu.nl% Image Sciences Institute, University Medical Center Utrecht % P.O. Box 85500, 3508 GA Utrecht, The Netherlands% $Id: chernoffm.m,v 1.2 2008/06/11 15:43:18 duin Exp $function W = chernoffm(a,n,r)	prtrace(mfilename);	if (nargin < 3)        r = 0;	end	if (nargin < 2)		prwarning (4, 'number of dimensions to map to not specified, assuming min(C,K)-1');		n = []; 	end	% If no arguments are specified, return an untrained mapping.	if (nargin < 1) | (isempty(a))		W = mapping('chernoffm',{n,r});		W = setname(W,'Chernoff mapping');		return	end	isvaldset(a,2,2); % at least 2 objects per class, 2 classes	% If N is not given, set it. 	[m,k,c] = getsize(a); if (isempty(n)), n = min(k,c)-1; end	if (n >= m) 		error('The dataset is too small for the requested dimensionality')	end	% To simplify computations, the within scatter W is set to the identity matrix     % therefore A is centered and sphered by KLMS.	v = klms(a); a = a*v;		k = size(v,2); % dimensionalities may have changed for small training sets		% Now determine a solution to the Chernoff criterion	[U,G] = meancov(a); 	CHERNOFF = zeros(k);    p = getprior(a);        for i = 1:c-1 % loop over all class pairs        for j = i+1:c            p_i = p(i)/(p(i)+p(j)); p_j = p(j)/(p(i)+p(j));            G_i = (1-r)*G(:,:,i) + r*eye(k); G_j = (1-r)*G(:,:,j) + r*eye(k);            G_ij = p_i*G_i + p_j*G_j;            m_ij = sqrtm(real(inv(G_ij)))*(U(i,:) - U(j,:))';            CHERNOFF = CHERNOFF + p(i) * p(j) * ...                ( m_ij * m_ij' ...                + 1/(p_i*p_j) * ( logm(G_ij) ...                - p_i * logm(G_i) - p_j * logm(G_j) ) );        end    end	[F,V] = eig(CHERNOFF); 				[dummy,I] = sort(-diag(V)); 	I = I(1:n);	rot = F(:,I);	off = -mean(a*F(:,I));	preW = affine(rot,off,a);	W = v*preW;					% Construct final mapping.	W = setname(W,'Chernoff mapping');return

⌨️ 快捷键说明

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