X-SOM finished!
Christoph Budziszewski

Christoph Budziszewski commited on 2009-04-07 15:54:26
Zeige 5 geänderte Dateien mit 23 Einfügungen und 30 Löschungen.


git-svn-id: https://svn.discofish.de/MATLAB/spmtoolbox/SVMCrossVal@173 83ab2cfd-5345-466c-8aeb-2b2739fb922d
... ...
@@ -135,8 +135,8 @@ switch task
135 135
         display('SOM');
136 136
         disp('not implemented')
137 137
 
138
-    case 'X-SOM'
139
-        display('X-SOM');
138
+    case 'XSOM'
139
+        display('XSOM');
140 140
         somopts.size = [3 3];
141 141
         somopts.lattice = 'rect';
142 142
         decode = som_xsubject_performance(header,data,somopts);
... ...
@@ -1,6 +1,21 @@
1
-function decode = som_decode(sD, sM, svm_validation_data,svm_validation_label)
1
+function decode = som_decode(sM, svm_validation_data,svm_validation_label)
2 2
 % the number of hits in each map-unit.
3 3
 
4
-sValD = som_data_struct(svm_validation_data,'label',num2str(svm_validation_label));
5
-h   = som_hits(sM,sValD);
4
+sValD = som_data_struct(svm_validation_data,'labels',num2str(svm_validation_label));
5
+% h   = som_hits(sM,sValD);
6 6
 bmu = som_bmus(sM, sValD, 'best');
7
+
8
+correct = 0;
9
+nElements = length(svm_validation_label);
10
+nBMUs = length(bmu);
11
+
12
+for i = 1:nBMUs
13
+    if isnan(bmu(i))
14
+        nElements = nElements - 1;
15
+    elseif ( cell2mat(sM.labels(bmu(i))) == cell2mat(sValD.labels(i)) )
16
+        correct = correct + 1;
17
+    end
18
+end
19
+    
20
+decode = correct/nElements*100;
21
+end
7 22
\ No newline at end of file
... ...
@@ -3,15 +3,10 @@ function [sD sM] = som_train(svmlabel, svmdata, somOptions)
3 3
 som_size = somOptions.size;
4 4
 som_lattice = somOptions.lattice;
5 5
 
6
-display('SOM TRAINING');
7 6
 addpath 'somtoolbox2';
8
-sD = som_data_struct(svmdata,'label',num2str(svmlabel));
9
-assignin('base','sD',sD);
10
-sM = som_make(sD,'msize', som_size,'lattice', som_lattice);
7
+sD = som_data_struct(svmdata,'labels',num2str(svmlabel));
11 8
 
9
+sM = som_make(sD,'msize', som_size,'lattice', som_lattice);
12 10
 sM = som_autolabel(sM,sD,'vote');
13 11
 
14
-assignin('base','sD',sD);
15
-assignin('base','sM',sM);
16
-display('type ''figure'' before visualisation');
17 12
 end
18 13
\ No newline at end of file
... ...
@@ -67,7 +67,7 @@ for timeIndex = 1:timeLineEnd-timeLineStart+1
67 67
 
68 68
         [sD sM] = som_train(svm_train_label, svm_train_data, somOpts);
69 69
 
70
-        performance = som_decode(sD, sM, svm_validation_data,svm_validation_label);
70
+        performance = som_decode(sM, svm_validation_data,svm_validation_label);
71 71
         
72 72
         cross_value = [cross_value performance];
73 73
     end
... ...
@@ -1,17 +0,0 @@
1
-function [sD sM] = train_som(svmlabel, svmdata, somOptions)
2
-
3
-som_size = somOptions.size;
4
-som_lattice = somOptions.lattice;
5
-
6
-display('SOM TRAINING');
7
-addpath 'somtoolbox2';
8
-sD = som_data_struct(svmdata,'label',num2str(svmlabel));
9
-assignin('base','sD',sD);
10
-sM = som_make(sD,'msize', som_size,'lattice', som_lattice);
11
-
12
-sM = som_autolabel(sM,sD,'vote');
13
-
14
-assignin('base','sD',sD);
15
-assignin('base','sM',sM);
16
-display('type ''figure'' before visualisation');
17
-end
18 0
\ No newline at end of file
19 1