1 | %PE_LIBSVC LIBSVC for PE spaces
|
---|
2 | %
|
---|
3 | % W = PE_LIBSVC(A,C)
|
---|
4 | %
|
---|
5 | % INPUT
|
---|
6 | % A Pseudo-Euclidean Dataset
|
---|
7 | % C Trade_off parameter in the support vector classifier.
|
---|
8 | % Default C = 1;
|
---|
9 | %
|
---|
10 | % OUTPUT
|
---|
11 | % W Mapping: Support Vector Classifier
|
---|
12 | % J Object idences of support objects. Can be also obtained as W{4}
|
---|
13 | %
|
---|
14 | % DESCRIPTION
|
---|
15 | % Computation of the linear LIBSVC classifier for the Pseudo-Euclidean
|
---|
16 | % dataset A. Note that testsets should be defined in the same PE space
|
---|
17 | % as A.
|
---|
18 | %
|
---|
19 | % Warning: class prior probabilities in A are neglected.
|
---|
20 | %
|
---|
21 | % EXAMPLE
|
---|
22 | % trainset = gendatm;
|
---|
23 | % testset = gendatm;
|
---|
24 | % Dtrain = trainset*proxm(trainset,'m',1);
|
---|
25 | % Dtest = testset*proxm(testset,'m',1);
|
---|
26 | % w = pe_em(Dtrain);
|
---|
27 | % Xtrain = Dtrain*w;
|
---|
28 | % Xtest = Dtest*w;
|
---|
29 | % v = pe_libsvc(Xtrain);
|
---|
30 | % Xtest*v*testc
|
---|
31 | %
|
---|
32 | % SEE ALSO
|
---|
33 | % MAPPINGS, DATASETS, KNNC, PE_EM
|
---|
34 |
|
---|
35 | % R.P.W. Duin, r.p.w.duin@prtools.org
|
---|
36 | % Faculty EWI, Delft University of Technology
|
---|
37 | % P.O. Box 5031, 2600 GA Delft, The Netherlands
|
---|
38 |
|
---|
39 | function w = pe_libsvc(a,c)
|
---|
40 |
|
---|
41 | if nargin < 2, c = 1; end
|
---|
42 |
|
---|
43 | if nargin == 0 | isempty(a)
|
---|
44 | w = mapping(mfilename,'untrained',{c});
|
---|
45 | w = setname(w,'PE LIBSVC');
|
---|
46 |
|
---|
47 | elseif ~ismapping(c) % training
|
---|
48 |
|
---|
49 | if ~ispe_dataset(a)
|
---|
50 | prwarning(1,'Dataset is Euclidean')
|
---|
51 | w = libsvc(a,[],c);
|
---|
52 | else
|
---|
53 | ktrain = pe_kernelm(a,a)
|
---|
54 | v = libsvc(ktrain,0);
|
---|
55 | w = mapping(mfilename,'trained',{v,a},getlablist(a),size(a,2),getsize(a,3));
|
---|
56 | end
|
---|
57 |
|
---|
58 | else % execution, testset is in a, trained mapping is in c
|
---|
59 |
|
---|
60 | w = getdata(c,1);
|
---|
61 | trainset = getdata(c,2);
|
---|
62 | ktest = pe_kernelm(a,trainset);
|
---|
63 | w = ktest*w;
|
---|
64 |
|
---|
65 | end
|
---|
66 |
|
---|
67 | return |
---|