plot a critical difference diagram , MATLAB code

建立criticaldifference函数

function cd = criticaldifference(s,labels,alpha)
%
% CRITICALDIFFERNCE - plot a critical difference diagram
%
% CRITICALDIFFERENCE(S,LABELS) produces a critical difference diagram [1]
% displaying the statistical significance (or otherwise) of a matrix of
% scores, S, achieved by a set of machine learning algorithms. Here
% LABELS is a cell array of strings giving the name of each algorithm.
%
% References
%
% [1] Demsar, J., "Statistical comparisons of classifiers over multiple
% datasets", Journal of Machine Learning Research, vol. 7, pp. 1-30,
% 2006.
% %
% File : criticaldifference.m
%
% Date : Monday 14th April 2008
%
% Author : Gavin C. Cawley
%
% Description : Sparse multinomial logistic regression using a Laplace prior.
%
% History : 14/04/2008 - v1.00
%
% Copyright : (c) Dr Gavin C. Cawley, April 2008.
%
% This program is free software; you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 2 of the License, or
% (at your option) any later version.
%
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this program; if not, write to the Free Software
% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
% % Thanks to Gideon Dror for supplying the extended table of critical values. if nargin < 3
alpha = 0.1;
end % convert scores into ranks
[N,k] = size(s);
[S,r] = sort(s');
idx = k*repmat(0:N-1, k, 1)' + r';
R = repmat(1:k, N, 1);
S = S'; for i=1:N
for j=1:k
index = S(i,j) == S(i,:);
R(i,index) = mean(R(i,index));
end
end r(idx) = R;
r = r'; % compute critical difference
if alpha == 0.01
qalpha = [0.000 2.576 2.913 3.113 3.255 3.364 3.452 3.526 3.590 3.646 ...
3.696 3.741 3.781 3.818 3.853 3.884 3.914 3.941 3.967 3.992 ...
4.015 4.037 4.057 4.077 4.096 4.114 4.132 4.148 4.164 4.179 ...
4.194 4.208 4.222 4.236 4.249 4.261 4.273 4.285 4.296 4.307 ...
4.318 4.329 4.339 4.349 4.359 4.368 4.378 4.387 4.395 4.404 ...
4.412 4.420 4.428 4.435 4.442 4.449 4.456 ]; elseif alpha == 0.05
qalpha = [0.000 1.960 2.344 2.569 2.728 2.850 2.948 3.031 3.102 3.164 ...
3.219 3.268 3.313 3.354 3.391 3.426 3.458 3.489 3.517 3.544 ...
3.569 3.593 3.616 3.637 3.658 3.678 3.696 3.714 3.732 3.749 ...
3.765 3.780 3.795 3.810 3.824 3.837 3.850 3.863 3.876 3.888 ...
3.899 3.911 3.922 3.933 3.943 3.954 3.964 3.973 3.983 3.992 ...
4.001 4.009 4.017 4.025 4.032 4.040 4.046]; elseif alpha == 0.1
qalpha = [0.000 1.645 2.052 2.291 2.460 2.589 2.693 2.780 2.855 2.920 ...
2.978 3.030 3.077 3.120 3.159 3.196 3.230 3.261 3.291 3.319 ...
3.346 3.371 3.394 3.417 3.439 3.459 3.479 3.498 3.516 3.533 ...
3.550 3.567 3.582 3.597 3.612 3.626 3.640 3.653 3.666 3.679 ...
3.691 3.703 3.714 3.726 3.737 3.747 3.758 3.768 3.778 3.788 ...
3.797 3.806 3.814 3.823 3.831 3.838 3.846]; else
error('alpha must be 0.01, 0.05 or 0.1');
end cd = qalpha(k)*sqrt(k*(k+1)/(6*N)); figure(1);
clf
axis off
axis([-0.2 1.2 -20 140]);
axis xy
tics = repmat((0:(k-1))/(k-1), 3, 1);
line(tics(:), repmat([100, 101, 100], 1, k), 'LineWidth', 1.5, 'Color', 'k');
%tics = repmat(((0:(k-2))/(k-1)) + 0.5/(k-1), 3, 1);
%line(tics(:), repmat([100, 101, 100], 1, k-1), 'LineWidth', 1.5, 'Color', 'k');
line([0 0 0 cd/(k-1) cd/(k-1) cd/(k-1)], [113 111 112 112 111 113], 'LineWidth', 1, 'Color', 'r');
text(0.03, 116, ['Critical Distance=' num2str(cd)], 'FontSize', 12, 'HorizontalAlignment', 'left', 'Color', 'r'); for i=1:k
text((i-1)/(k-1), 105, num2str(k-i+1), 'FontSize', 12, 'HorizontalAlignment', 'center');
end % compute average ranks
r = mean(r);
[r,idx] = sort(r); % compute statistically similar cliques
clique = repmat(r,k,1) - repmat(r',1,k);
clique(clique<0) = realmax;
clique = clique < cd; for i=k:-1:2
if all(clique(i-1,clique(i,:))==clique(i,clique(i,:)))
clique(i,:) = 0;
end
end n = sum(clique,2);
clique = clique(n>1,:);
n = size(clique,1); %yanse={'b','g','y','m','r'};
b=linspace(0,1,k);
% labels displayed on the right
for i=1:ceil(k/2)
line([(k-r(i))/(k-1) (k-r(i))/(k-1) 1], [100 100-3*(n+1)-10*i 100-3*(n+1)-10*i], 'Color', [0 0 b(i)]);
%text(1.2, 100 - 5*(n+1)- 10*i + 2, num2str(r(i)), 'FontSize', 10, 'HorizontalAlignment', 'right');
text(1.02, 100 - 3*(n+1) - 10*i, labels{idx(i)}, 'FontSize', 12, 'VerticalAlignment', 'middle', 'HorizontalAlignment', 'left', 'Color', [0 0 b(i)]);
end % labels displayed on the left
for i=ceil(k/2)+1:k
line([(k-r(i))/(k-1) (k-r(i))/(k-1) 0], [100 100-3*(n+1)-10*(k-i+1) 100-3*(n+1)-10*(k-i+1)], 'Color', [0 0 b(i)]);
%text(-0.2, 100 - 5*(n+1) -10*(k-i+1)+2, num2str(r(i)), 'FontSize', 10, 'HorizontalAlignment', 'left');
text(-0.02, 100 - 3*(n+1) -10*(k-i+1), labels{idx(i)}, 'FontSize', 12, 'VerticalAlignment', 'middle', 'HorizontalAlignment', 'right', 'Color', [0 0 b(i)]);
end % group cliques of statistically similar classifiers
for i=1:size(clique,1)
R = r(clique(i,:));
%line([((k-min(R))/(k-1)) + 0.015 ((k - max(R))/(k-1)) - 0.015], [100-5*i 100-5*i], 'LineWidth', 1, 'Color', 'r');
%line([0 0 0 cd/(k-1) cd/(k-1) cd/(k-1)], [113 111 112 112 111 113], 'LineWidth', 1, 'Color', 'r');
line([((k-min(R))/(k-1)) ((k-min(R))/(k-1)) ((k-min(R))/(k-1)) ((k - max(R))/(k-1)) ((k - max(R))/(k-1)) ((k - max(R))/(k-1))], [100+1-5*i 100-1-5*i 100-5*i 100-5*i 100-1-5*i 100+1-5*i], 'LineWidth', 1, 'Color', 'r');
end

 可执行m文件:

 load Data
s=AccMatrix;
labels={'SCV1V1','SVC1VA','SVR','CSSVC','SVMOP','NNOP','ELMOP','POM',...
'NNPOM', 'SVOREX','SVORIM','SVORIMLin','KDLOR','GPOR','REDSVM','ORBALL' ,'NPSVORIM'};%方法的标签 alpha=0.05; %显著性水平0.1,0.05或0.01
cd = criticaldifference(s,labels,alpha)

  AccMatrix=[

0.28 0.12 0.28 0.11 0.32 0.08 0.26 0.13 0.37 0.10 0.28 0.12 0.42 0.21 0.38 0.17 0.36 0.14 0.36 0.13 0.38 0.12 0.37 0.10 0.34 0.15 0.39 0.09 0.37 0.12 0.36 0.13 0.37 0.11

0.31 0.12 0.33 0.11 0.34 0.13 0.32 0.11 0.32 0.09 0.24 0.11 0.40 0.18 0.50 0.15 0.34 0.18 0.35 0.12 0.34 0.12 0.34 0.12 0.33 0.11 0.48 0.17 0.33 0.11 0.30 0.12 0.28 0.14

0.36 0.09 0.40 0.14 0.39 0.11 0.39 0.13 0.40 0.09 0.39 0.11 0.44 0.16 0.62 0.15 0.50 0.13 0.37 0.13 0.37 0.13 0.37 0.13 0.39 0.12 0.55 0.10 0.38 0.13 0.36 0.12 0.32 0.10

0.22 0.12 0.28 0.16 0.24 0.10 0.27 0.15 0.27 0.11 0.29 0.11 0.39 0.13 0.65 0.14 0.39 0.14 0.26 0.11 0.27 0.11 0.32 0.11 0.26 0.11 0.36 0.16 0.27 0.12 0.30 0.10 0.22 0.10

0.44 0.06 0.45 0.06 0.40 0.07 0.43 0.07 0.46 0.06 0.41 0.06 0.44 0.08 0.50 0.08 0.45 0.09 0.41 0.07 0.40 0.07 0.48 0.07 0.43 0.05 0.67 0.04 0.40 0.07 0.40 0.06 0.41 0.05

0.03 0.03 0.04 0.03 0.04 0.02 0.04 0.02 0.04 0.03 0.04 0.02 0.06 0.02 0.03 0.02 0.03 0.03 0.03 0.02 0.03 0.02 0.03 0.02 0.03 0.02 0.03 0.02 0.03 0.02 0.04 0.03 0.03 0.03

0.03 0.01 0.03 0.01 0.16 0.03 0.03 0.01 0.03 0.01 0.04 0.01 0.09 0.02 0.09 0.02 0.06 0.05 0.00 0.01 0.00 0.01 0.09 0.02 0.16 0.03 0.03 0.01 0.00 0.00 0.03 0.02 0.02 0.01

0.42 0.03 0.44 0.03 0.43 0.03 0.43 0.03 0.42 0.03 0.42 0.03 0.43 0.02 0.43 0.03 0.46 0.03 0.43 0.03 0.43 0.03 0.43 0.03 0.51 0.03 0.42 0.03 0.43 0.03 0.44 0.03 0.43 0.03

0.01 0.00 0.01 0.01 0.03 0.01 0.01 0.01 0.00 0.00 0.03 0.01 0.16 0.01 0.84 0.30 0.11 0.02 0.01 0.01 0.01 0.01 0.08 0.01 0.05 0.01 0.04 0.01 0.01 0.00 0.01 0.01 0.01 0.00

0.43 0.04 0.43 0.06 0.46 0.07 0.43 0.06 0.45 0.10 0.53 0.09 0.57 0.13 0.66 0.16 0.62 0.14 0.45 0.06 0.45 0.07 0.43 0.08 0.47 0.09 0.42 0.03 0.44 0.05 0.46 0.09 0.42 0.08

0.05 0.03 0.05 0.03 0.07 0.04 0.05 0.03 0.07 0.03 0.06 0.03 0.07 0.03 0.71 0.03 0.06 0.03 0.02 0.01 0.02 0.01 0.74 0.01 0.11 0.03 0.05 0.02 0.02 0.01 0.05 0.02 0.04 0.03

0.36 0.03 0.45 0.03 0.36 0.03 0.44 0.03 0.35 0.03 0.42 0.04 0.43 0.03 0.85 0.02 0.46 0.04 0.36 0.03 0.36 0.03 0.36 0.02 0.37 0.03 0.31 0.03 0.36 0.03 0.38 0.03 0.34 0.03

0.37 0.02 0.37 0.02 0.38 0.02 0.37 0.02 0.37 0.02 0.37 0.03 0.37 0.02 0.38 0.03 0.38 0.02 0.38 0.02 0.38 0.02 0.39 0.02 0.46 0.03 0.39 0.03 0.37 0.02 0.39 0.03 0.37 0.03

0.25 0.06 0.26 0.06 0.32 0.07 0.27 0.06 0.26 0.04 0.39 0.06 0.38 0.06 0.53 0.19 0.55 0.08 0.32 0.05 0.32 0.07 0.41 0.07 0.30 0.07 0.39 0.07 0.32 0.07 0.29 0.05 0.27 0.05

0.35 0.02 0.36 0.02 0.37 0.02 0.36 0.02 0.36 0.02 0.40 0.02 0.40 0.02 0.40 0.02 0.40 0.02 0.37 0.02 0.37 0.02 0.41 0.02 0.35 0.02 0.39 0.01 0.37 0.02 0.33 0.02 0.36 0.02

0.31 0.04 0.33 0.03 0.30 0.03 0.32 0.03 0.29 0.03 0.31 0.04 0.30 0.04 0.29 0.03 0.34 0.13 0.29 0.03 0.28 0.03 0.29 0.04 0.36 0.03 0.29 0.03 0.29 0.03 0.32 0.02 0.29 0.03

0.74 0.02 0.82 0.03 0.75 0.02 0.80 0.03 0.74 0.02 0.71 0.02 0.75 0.02 0.74 0.02 0.73 0.03 0.71 0.03 0.75 0.02 0.76 0.02 0.81 0.03 0.71 0.03 0.75 0.02 0.76 0.02 0.75 0.03 ];

plot a critical difference diagram , MATLAB code的更多相关文章

  1. Silence Removal and End Point Detection MATLAB Code

    转载自:http://ganeshtiwaridotcomdotnp.blogspot.com/2011/08/silence-removal-and-end-point-detection.html ...

  2. Compute Mean Value of Train and Test Dataset of Caltech-256 dataset in matlab code

    Compute Mean Value of Train and Test Dataset of Caltech-256 dataset in matlab code clc;imPath = '/ho ...

  3. Matlab Code for Visualize the Tracking Results of OTB100 dataset

    Matlab Code for Visualize the Tracking Results of OTB100 dataset 2018-11-12 17:06:21 %把所有tracker的结果画 ...

  4. 支持向量机的smo算法(MATLAB code)

    建立smo.m % function [alpha,bias] = smo(X, y, C, tol) function model = smo(X, y, C, tol) % SMO: SMO al ...

  5. MFCC matlab code

    %function ccc=mfcc(x) %归一化mel滤波器组系数 filename=input('input filename:','s'); [x,fs,bits]=wavread(filen ...

  6. word linkage 选择合适的聚类个数matlab code

    clear load fisheriris X = meas; m = size(X,2); % load machine % load census % % X = meas; % X=X(1:20 ...

  7. sequential minimal optimization,SMO for SVM, (MATLAB code)

    function model = SMOforSVM(X, y, C ) %sequential minimal optimization,SMO tol = 0.001; maxIters = 30 ...

  8. MATLAB中矢量场图的绘制 (quiver/quiver3/dfield/pplane) Plot the vector field with MATLAB

    1.quiver函数 一般用于绘制二维矢量场图,函数调用方法如下: quiver(x,y,u,v) 该函数展示了点(x,y)对应的的矢量(u,v).其中,x的长度要求等于u.v的列数,y的长度要求等于 ...

  9. 求平均排序MATLAB code

    A0=R(:,1:2:end); for i=1:17 A1=A0(i,:); p=sort(unique(A1)); for j=1:length(p) Rank0(A1==p(j))=j; end ...

随机推荐

  1. vim配置php开发环境

    1.ctags-用于代码间的跳转 安装 sudo apt-get install ctags 使用 1). 在某个目录下, 建立tags. ctags -R . --执行之后会在当前目录下生成一个ta ...

  2. 不含类解决最后一个li边距问题

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. iOS - UITabBarController

    前言 NS_CLASS_AVAILABLE_IOS(2_0) @interface UITabBarController : UIViewController <UITabBarDelegate ...

  4. STRUTS2 嵌套循环

    <!--begin 类目循环 --> <s:iterator value="categories" id='i' begin="0" step ...

  5. hdu3264Open-air shopping malls(二分)

    链接 枚举伞的圆心,最多只有20个,因为必须与某个现有的圆心重合. 然后再二分半径就可以了. #include <iostream> #include<cstdio> #inc ...

  6. dateTimePicker的使用,时间控件

    <li> <label>促销时间<span class="imprt">*</span></label> <inp ...

  7. HashMap遍历

    package com.jackey.topic; import java.util.ArrayList;import java.util.HashMap;import java.util.Itera ...

  8. 20160808_安装JDK7u79

    1.将 jdk-7u79-linux-x64.tar.gz 解压,得到文件夹“jdk1.7.0_79” 将 文件夹“jdk1.7.0_79” 复制到 “/usr/java/”下 2.配置环境变量: 文 ...

  9. windows多线程框架

    #include <iostream> #include <windows.h> using namespace std; HANDLE hMutex; //public : ...

  10. phalcon: 缓存片段,文件缓存,memcache缓存

    几种缓存,需要用到前端配置,加后端实例配合着用 片段缓存: public function indexAction() { //渲染页面 $this->view->setTemplateA ...