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

📄 testp.m

📁 模式识别工具箱。非常丰富的底层函数和常见的统计识别工具
💻 M
字号:
%TESTP Error estimation of Parzen classifier% % 	E = TESTP(A,H,T)% 	E = TESTP(A,H)% % INPUT%     A    input dataset%     H    matrix smoothing parameters (optional, def: determined via%            parzenc)%     T    test dataset (optional)%% OUTPUT%     E    estimated error rate%% DESCRIPTION % Tests a dataset T on dataset A using a Parzen classification and returns% the classification error E.  Returns the leave-one-out error estimate. If% H is not given, it is determined by PARZENC.% % SEE ALSO% DATASETS, MAPPINGS, PARZEN_MAP, PARZENML, PARZENC. % Copyright: R.P.W. Duin, duin@ph.tn.tudelft.nl% Faculty of Applied Physics, Delft University of Technology% P.O. Box 5046, 2600 GA Delft, The Netherlands% may be to be merged with parzen_map, see also testk% $Id: testp.m,v 1.3 2007/04/16 08:34:19 duin Exp $function e = testp(a,h,t)	prtrace(mfilename);		isvaldfile(a,2,2);	a = testdatasize(a);	a = testdatasize(a,'objects');		if nargin < 2, [W,h] = parzenc(a); end	[m,k,c] = getsize(a);	nlab = getnlab(a);	lablist = getlablist(a);	p = getprior(a);		if length(h) == 1, h = h*ones(1,c); end	if length(h) ~= c, error('Wrong number of smoothing parameters'); end	% if no test dataset is specified	if nargin <= 2		% find for each sample cross-validated estimate		% of aposteriori probability.		d = classp(a,nlab,h,p);		[dmax,J] = max(d',[],1);		e = nlabcmp(lablist(J,:),lablist(nlab,:)) / m;        % if the validation dataset is given	elseif nargin == 3		lablistt = getlablist(t);		[n,kt] = size(t);		nlabt = getnlab(t);		if k ~= kt 			error('Data sizes do not match');		end		d = classp(a,nlab,h,p,t); 		[dmax,J] = max(d',[],1);		e = nlabcmp(lablistt(J,:),lablistt(nlabt,:)) / n;	endreturn%CLASSP estimate of Parzen density (if t is not specified, % a leave-one-out error estimate for a is returned)function F = classp(a,nlab,h,p,t)	[m,k] = size(a);	maxa = max(max(abs(a)));	a = a/maxa;	h = h/maxa;	if nargin < 5		mt = m;	else		[mt,kt] = size(t);		t = t/maxa;	end	c = max(nlab);	alf=sqrt(2*pi)^k; % density normalization factor	[num,n] = prmem(mt,m); % use batches to avoid excessive memory usage	F = ones(mt,c);	for i = 0:num-1		if i == num-1			nn = mt - num*n + n;		else			nn = n;		end		range = [i*n+1:i*n+nn];		if nargin <= 4			D = +distm(a,a(range,:));			D(i*n+1:m+1:i*n+nn*m) = inf*ones(1,nn); % set distances to itself at inf		else			D = +distm(a,t(range,:));		end		for i=1:c			I = find(nlab == i);			if length(I) > 0				F(range,i) = p(i).*sum(exp(-D(I,:)*0.5./(h(i).^2)),1)'./(length(I)*alf*h(i)^k);			end		end	end	F = F + realmin;	F = F ./ (sum(F')'*ones(1,c));return

⌨️ 快捷键说明

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