Mercurial > hg > camir-aes2014
annotate core/tools/machine_learning/display_mahalanobis_metric.m @ 0:e9a9cd732c1e tip
first hg version after svn
author | wolffd |
---|---|
date | Tue, 10 Feb 2015 15:05:51 +0000 |
parents | |
children |
rev | line source |
---|---|
wolffd@0 | 1 function display_mahalanobis_metric(A, labels) |
wolffd@0 | 2 % display a mala matrix and its stats |
wolffd@0 | 3 |
wolffd@0 | 4 if nargin < 2 |
wolffd@0 | 5 labels = num2cell(1:size(A,1)); |
wolffd@0 | 6 |
wolffd@0 | 7 elseif ~iscell(labels) |
wolffd@0 | 8 |
wolffd@0 | 9 features = labels; |
wolffd@0 | 10 labels = features.labels; |
wolffd@0 | 11 end |
wolffd@0 | 12 |
wolffd@0 | 13 |
wolffd@0 | 14 |
wolffd@0 | 15 figure; |
wolffd@0 | 16 |
wolffd@0 | 17 % plot matrix |
wolffd@0 | 18 imagesc(A); |
wolffd@0 | 19 axis xy; |
wolffd@0 | 20 |
wolffd@0 | 21 % set labels |
wolffd@0 | 22 set(gca,'YTick', 1:numel(labels), ... |
wolffd@0 | 23 'YTickLabel', labels); |
wolffd@0 | 24 set(gca,'XTick',1:numel(labels), ... |
wolffd@0 | 25 'XTickLabel', labels); |
wolffd@0 | 26 |
wolffd@0 | 27 % --- |
wolffd@0 | 28 % approximate parameter weights: |
wolffd@0 | 29 % diagonal and sum(abs(row)) |
wolffd@0 | 30 % TODO: make nshow dependend on percentile |
wolffd@0 | 31 % --- |
wolffd@0 | 32 |
wolffd@0 | 33 nshow = min(numel(labels), 50); |
wolffd@0 | 34 figure; |
wolffd@0 | 35 |
wolffd@0 | 36 % get diagonal values of the Matrix |
wolffd@0 | 37 diagw = abs(diag(A)); |
wolffd@0 | 38 |
wolffd@0 | 39 % --- |
wolffd@0 | 40 % weight with feature values if possible |
wolffd@0 | 41 % --- |
wolffd@0 | 42 if exist('features','var') |
wolffd@0 | 43 |
wolffd@0 | 44 diagw = diagw.* mean(features.vector(),2); |
wolffd@0 | 45 end |
wolffd@0 | 46 |
wolffd@0 | 47 |
wolffd@0 | 48 [diagw, idx] = sort(diagw, 'descend'); |
wolffd@0 | 49 |
wolffd@0 | 50 % normalise |
wolffd@0 | 51 alld = sum(diagw); |
wolffd@0 | 52 |
wolffd@0 | 53 % plot |
wolffd@0 | 54 bar(diagw(1:nshow)./ alld); |
wolffd@0 | 55 set(gca,'XTick',1:nshow, ... |
wolffd@0 | 56 'XTickLabel', labels(idx(1:nshow))); |
wolffd@0 | 57 |
wolffd@0 | 58 ylabel ('relevance factor'); |
wolffd@0 | 59 |
wolffd@0 | 60 if exist('features','var') |
wolffd@0 | 61 xlabel 'normalised weight' |
wolffd@0 | 62 else |
wolffd@0 | 63 xlabel 'matrix factors' |
wolffd@0 | 64 end |
wolffd@0 | 65 |
wolffd@0 | 66 end |