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