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

📄 kernelm.m

📁 The pattern recognition matlab toolbox
💻 M
字号:
%KERNELM Kernel mapping, dissimilarity representation% %   [W,J] = KERNELM(A,KERNEL,SELECT,P1,P2 , ...)%    W    = A*KERNELM([],KERNEL,SELECT,P1,P2 , ...)%    K    = B*W%% INPUT%   A,B         Datasets%   KERNEL      Untrained kernel / dissimilarity representation,%               a mapping computing proximities between objects.%               default: Euclidean dissimilarities: PROXM([],'d',1)%   SELECT      Name of object selection procedure, see below%   P1,P2, ...  Additional parameters for SELECT%% OUTPUT%   W          Mapping%   J          Vector with indices of selected objects for representation%   K          Kernel matrix, dissimilarity representation, %              size [SIZE(B,1) LENGTH(J)]%% DESCRIPTION% Computes the kernel mapping W for the representation objects in A. The % computation of the kernel matrix, which is a proximity matrix (similarities% or dissimilarities) should be defined in KERNEL by an untrained mapping like% PROXM for predefined proximities or USERKERNEL for user specified% proximities.% A*KERNEL should 'train' the kernel, i.e. specify A as representation set.% B*(A*KERNEL) should compute the kernel matrix: a dataset.%% Initially, the kernel mapping has a size [SIZE(A,2) SIZE(A,1)]. For% increased efficiency or accuracy the representation set may be reduced% by a routine given by the string SELECT to select to objects J, using % possibly additional parameters P1, P2, etcetera. This option of% representation set reduction is the only difference between the use of% KERNELM and routines like PROXM and USERKERNEL.%% The following choices for SELECT are supported:% % 'random'    random selection of P1 objects, maximum P2% 'gendat'    [X,Y,J] = GENDAT(A,P1)% 'kcentres'  [LAB,J] = KCENTRES(DISTM(A),P1,P2)% 'modeseek'  [LAB,J] = MODESEEK(DISTM(A),P1)% 'edicon'    J = EDICON(DISTM(A),P1,P2,P3)% 'featsel'   J = +FEATSELM(A*KERNELM(A,TYPE,P),P1,P2,P3)%% REFERENCES% 1. E.Pekalska, R.P.W.Duin, P.Paclik, Prototype selection for dissimilarity-% based classification, Pattern Recognition, vol. 39, no. 2, 2006, 189-208.% 2. E.Pekalska and R.P.W.Duin, The Dissimilarity Representation for Pattern% Recognition, Foundations and Applications, World Scientific, 2005, 1-607.% % EXAMPLE% A = GENDATB;% W = (SCALEM*KERNELM([],[],'random',5)*LOGLC); % SCATTERD(A)% PLOTC(A*W)%% SEE ALSO% DATASETS, MAPPINGS, PROXM, USERKERNEL% 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% $Id: kernelm.m,v 1.7 2007/07/10 08:25:29 duin Exp $function w = kernelm(a,kernel,select,varargin);	prtrace(mfilename);		if isempty(varargin), varargin = {[] [] []}; end	if length(varargin) == 1, varargin = {varargin{:} [] []}; end	if length(varargin) == 2, varargin = {varargin{:} []}; end		if (nargin < 3) 		select = []; 		prwarning(4,'No representation set reduction specified.')	end	if (nargin < 2) | isempty(kernel)		prwarning(3,'No kernel mapping specified. Euclidean distances assumed')		kernel = proxm([],'d',1); 	end	if (nargin < 1) | (isempty(a))  		% Definition: an untrained mapping.		w = mapping(mfilename,{kernel,select,varargin{:}});		w = setname(w,'Kernel mapping');			elseif isstr(kernel) % old format of call: kernelm(a,type,p,n), training		type = kernel;		p = select;		if ~isempty(varargin)			if length(varargin) > 1				error('Wrong parameters supplied')			end			n = varargin{1};		else			n = [];		end		[m,k] = size(a);		kernel = proxm([],type,p);		w = mapping(mfilename,'trained',{a*kernel},getlab(a),k,m);		if ~isempty(n)			w = w*pca(a*w,n);		end		w = setname(w,'Kernel Mapping');	elseif isa(kernel,'mapping') & ~strcmp(getmapping_file(kernel),mfilename) % training			a = testdatasize(a);		a = testdatasize(a,'objects');		isuntrained(kernel);		[m,k] = size(a);		%w = mapping('kernelm','trained',{a*kernel},getlab(a),k,m);		if ~isempty(select)			switch select				case 'random'					J = randperm(m);					n = varargin{1};					if isempty(n) | n > m						error('Number of objects to be selected not given or too large')					end					if n < 1, n = ceil(n*m); end % fraction given					if ~isempty(varargin{2})						n = min(n,varargin{2});					end					J = J(1:n);				case 'gendat'    					[x,y,J] = gendat(a,varargin{1});				case 'kcentres'  					[lab,J] = kcentres(distm(a),varargin{1:2});				case 'modeseek'  					[lab,J] = modeseek(distm(a),varargin{1});				case 'edicon'    					J = edicon(distm(a),varargin{1:3});				case 'featsel'					w = mapping('kernelm','trained',{a*kernel},getlab(a),k,m);					J = +featselm(a*w,varargin{1:3});				otherwise					error('Unknown choice for object selection')			end			% redefine mapping with reduced representation set			w = mapping('kernelm','trained',{a(J,:)*kernel},getlab(a),k,length(J));		else			w = mapping('kernelm','trained',{a*kernel},getlab(a),k,m);		end		w = setname(w,'Kernel Mapping');			else % Execution of the mapping, w will be a dataset.				kern = getdata(kernel,1); % trained kernel is stored in datafield		K = a*kern;		w = setdat(a,K,kern);			endreturn;

⌨️ 快捷键说明

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