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

📄 featselp.m

📁 模式识别工具包
💻 M
字号:
%FEATSELP Pudil's floating feature selection (forward)% % 	[W,R] = featselp(A,crit,k,T)% % Forward floating selection of k features using the dataset A. crit % sets the criterion used by the feature evaluation routine % feateval. If the data set T is given, it is used as test set for % feateval. For k=0 the optimal feature set (maximum value of % feateval) is returned. The result W can be used for selecting % features by B*W. In R the search is step by step reported:% % % % 	R(:,1) : number of features% 	R(:,2) : criterion value% 	R(:,3) : added / deleted feature% % Defaults: crit='NN', k=0% % See also mappings, datasets, feateval, featselm, featself, % featselb, featselo, featseli% 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 Netherlandsfunction [W,R] = featselp(A,crit,ksel,T)if nargin < 2, crit = 'NN'; endif nargin < 3, ksel = 0; endif nargin < 4, T = []; endif nargin == 0 | isempty(A)	W = mapping('featselp',{crit,ksel,T});    returnend[nlaba,lablist,m,k,c,prob,featlist] = dataset(A);if ksel == 0, peak = 1; ksel = k; else peak = 0; endif ~isempty(T)	[mt,kt] = size(T);	if kt ~= k		error('Data sizes do not match')	endendCmax = 0;CC = zeros(1,k);I = [1:k];J = [];R = [];Iopt = J;n = 0;while n < k	C = zeros(1,length(I));	for j = 1:length(I)		L = [J,I(j)];      if isempty(T)         C(j) = feateval(A(:,L),crit);		else			C(j) = feateval(A(:,L),crit,T(:,L));      end      if C(j) > Cmax & n < ksel			nmax = length(L);			Cmax = C(j);			Iopt = L;		end	end	[mx,j] = max(C);	n = n + 1;	CC(n) = mx;	J = [J,I(j)];	I(j) = [];	r = [n,mx,J(end)];	R = [R; r];	%disp(r)   	while n > 2		C = zeros(1,n);		for j = 1:n			L = J; L(j) = [];			if isempty(T)				C(j) = feateval(A(:,L),crit);			else				C(j) = feateval(A(:,L),crit,T(:,L));			end					if ( (C(j) > Cmax) | ((C(j) == Cmax) & (length(L) < nmax))) & (n <= ksel + 1);				nmax = length(L);				Cmax = C(j);				Iopt = L;			end		end		[mx,j] = max(C);		if mx > CC(n-1) 			n = n - 1;			CC(n) = mx;			I = [I,J(j)];			J(j) = [];			r = [n,mx,-I(end)];			R = [R; r];			%disp(r)		else			break		end	end      	if n > ksel		J = Iopt(1:ksel);		W = mapping('featsel',J,featlist(J,:),k,length(J));		return	endendW = mapping('featsel',Iopt,featlist(Iopt,:),k,length(Iopt));return

⌨️ 快捷键说明

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