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

📄 gendat.m

📁 这个为模式识别工具箱
💻 M
字号:
%GENDAT Random generation of datasets for training and testing% %  [A,B,IA,IB] = GENDAT(X,N)%  [A,B,IA,IB] = GENDAT(X)%  [A,B,IA,IB] = GENDAT(X,ALF)% % INPUT%   X      Dataset%   N,ALF  Number/fraction of objects to be selected %          (optional; default: bootstrapping)%% OUTPUT%   A,B    Datasets%   IA,IB  Original indices from the dataset X%% DESCRIPTION% Generation of N objects from dataset X. They are stored in dataset A,% the remaining objects in dataset B. IA and IB are the indices of the% objects selected from X for A and B. The random object generation follows% the class prior probabilities. If N is a vector of sizes, exactly N(i)% objects are generated for class i, i=I. Classes are ordered using% RENUMLAB(GETLAB(X)). %% If the function is called without specifying N, the data set X is% bootstrapped and stored in A. Not selected samples are stored in B.%% ALF should be a scalar < 1. For each class a fraction ALF of the objects% is selected for A and the not selected objects are stored in B.%% If X is a cell array of datasets the command is executed for each% dataset separately. Results are stored in cell arrays. For each dataset% the random seed is reset, resulting in aligned sets for the generated% datasets if the sets in X were aligned.% % EXAMPLES % See PREX_PLOTC.%% SEE ALSO% DATASETS% 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: gendat.m,v 1.10 2004/11/05 13:59:47 duin Exp $function [A,B,IA,IB] = gendat(X,N);	prtrace(mfilename);		if (nargin < 2), 		prwarning(4,'Second parameter is not specified. A bootstrapping a dataset.');		N = []; 	end	% If an input is a cell array of datasets, apply this procedure  % to the individual datasets.	if (iscell(X))		A  = cell(size(X));		B  = cell(size(X));		IA = cell(size(X));		IB = cell(size(X));		seed = rand('seed');		for j=1:length(X(:))			rand('seed',seed);			[A{j},B{j},IA{j},IB{j}] = feval(mfilename,X{j},N);		end		return;	end	% When required, get the right number of objects from the given	% fraction ALF.	X = dataset(X);	X = setlablist(X); % remove empty classes first	%p = getprior(X);	[m,k,c] = getsize(X);	% we need at least one class bellow:	if c==0, 	   X=cdats(X,1); 	   c=1;	end	R = classsizes(X);	if ~isempty(N) & length(N) ~= 1 & length(N) ~= c		error('Data size should be scalar or a vector matching the number of classes')	end	if (nargin == 2) & (N < 1)		%DXD it should also be possible to have a fraction for each of the		%classes, I think...		if length(N)==1			N = ceil(N*R);		else			N = ceil(N(:).*R(:));		end	end	% Depending if N (or ALF) is given, the objects are created using	% subsampling or bootstrapping.	IA = [];	if (nargin < 2) | (isempty(N))			% Bootstrap		for i=1:c			J = findnlab(X,i);			K = ceil(rand(R(i),1)*R(i));			IA = [IA; J(K)];		end	else																% Subsampling		if islabtype(X,'targets')			N = genclass(N,1);			K = randperm(R);			IA = K(1:N);			if (N > R)				error('More objects requested than available.')			end		else			p = getprior(X);			N = genclass(N,p);			for i=1:c				J = findnlab(X,i);				K = randperm(R(i));				if (N(i) > R(i))					error('More objects requested than available.')				end				IA = [IA; J(K(1:N(i)))];			end		end	end	% Finally, extract the datasets:	IB = [1:m]';	IB(IA) = [];	A = X(IA,:);	B = X(IB,:);return;

⌨️ 快捷键说明

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