[5] | 1 | %LPSVC Sparse linear programming classifier according to Mangasarian
|
---|
| 2 | %
|
---|
| 3 | % [W,E] = LPSVC(A,N,PoARAM)
|
---|
| 4 | % W = A*LPSVC([],N,PARAM)
|
---|
| 5 | %
|
---|
| 6 | % INPUT
|
---|
| 7 | % A Dataset
|
---|
| 8 | % N N-fold cross-validationocedure
|
---|
| 9 | % N = 1: no cross-validation
|
---|
| 10 | % N = size A: leave-one-out pr
|
---|
| 11 | % PARAM Linear programming option
|
---|
| 12 | % -1 Easy
|
---|
| 13 | % 0 Hard (default)
|
---|
| 14 | % Otherwise: nu
|
---|
| 15 | %
|
---|
| 16 | % OUTPUT
|
---|
| 17 | % W Classifier
|
---|
| 18 | % E Internal error estimate
|
---|
| 19 | %
|
---|
| 20 | % DESCRIPTION
|
---|
| 21 | % This routine calls LPSVM by Fung and Mangasarian. If you use it, please
|
---|
| 22 | % refer to the below paper.
|
---|
| 23 | %
|
---|
| 24 | % REFERENCE
|
---|
| 25 | % G.M. Fung and O.L. Mangasarian, A Feature Selection Newton Method for
|
---|
| 26 | % Support Vector Machine Classification, Computational Optimization and
|
---|
| 27 | % Aplications, vol. 28, 2004, 185-202.
|
---|
| 28 | %
|
---|
| 29 | % SEE ALSO
|
---|
| 30 | % MAPPINGS, DATASETS, LINPROGC
|
---|
| 31 |
|
---|
| 32 | % Elzbieta Pekalska, Robert P.W. Duin, e.pekalska@ewi.tudelft.nl
|
---|
| 33 | % Faculty of Electrical Engineering, Mathematics and Computer Science,
|
---|
| 34 | % Delft University of Technology, The Netherlands.
|
---|
| 35 |
|
---|
| 36 | function [w,J] = lpsvm(a,n,param)
|
---|
| 37 | if nargin < 3, param =0; end
|
---|
| 38 | if nargin < 2, n = 1; end
|
---|
| 39 | name = 'LPSVC';
|
---|
| 40 | if nargin < 1 | isempty(a)
|
---|
| 41 | w = mapping(mfilename,{n,param});
|
---|
| 42 | w = setname(w,name);
|
---|
| 43 | return
|
---|
| 44 | end
|
---|
| 45 | islabtype(a,'crisp');
|
---|
| 46 | isvaldset(a,1,2); % at least 1 object per class, 2 classes
|
---|
| 47 | [m,k,c] = getsize(a);
|
---|
| 48 | nlab = getnlab(a);
|
---|
| 49 | % The SVC is basically a 2-class classifier. More classes are
|
---|
| 50 | % handled by mclassc.
|
---|
| 51 | if c == 2 % two-class classifier
|
---|
| 52 | y = 3 - 2*nlab;
|
---|
| 53 | [v,v0,ea,et] = lpsvm(+a,y,n,param);
|
---|
| 54 | J = find(v~=0);
|
---|
| 55 | if isempty(J)
|
---|
| 56 | prwarning(1,'No features found. Fisher classifier is trained.')
|
---|
| 57 | wf = featsel(k,1:k);
|
---|
| 58 | w = wf*fisherc(a);
|
---|
| 59 | else
|
---|
| 60 | wf = featsel(k,J);
|
---|
| 61 | flab = getfeatlab(a);
|
---|
| 62 | w = wf*affine(v(J),-v0,flab(J,:),getlablist(a),length(J),c);
|
---|
| 63 | w = cnormc(w,a);
|
---|
| 64 | end
|
---|
| 65 |
|
---|
| 66 | else
|
---|
| 67 |
|
---|
| 68 | [w,J] = mclassc(a,mapping(mfilename,{n,param}));
|
---|
| 69 |
|
---|
| 70 | end
|
---|
| 71 |
|
---|
| 72 |
|
---|
| 73 |
|
---|
| 74 |
|
---|
| 75 |
|
---|
| 76 |
|
---|
| 77 |
|
---|