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 |
|
---|