matlab计算图像混淆矩阵代码,Matlab计算混淆矩阵

function [confmatrix] = cfmatrix(actual, predict, classlist, per)

% CFMATRIX calculates the confusion matrix for any prediction

% algorithm that generates a list of classes to which the test

% feature vectors are assigned

%

% Outputs: confusion matrix

%

%                 Actual Classes

%                   p       n

%              ___|_____|______|

%    Predicted  p\'|     |      |

%      Classes  n\'|     |      |

%

% Inputs:

% 1. actual / 2. predict

% The inputs provided are the \'actual\' classes vector

% and the \'predict\'ed classes vector. The actual classes are the classes

% to which the input feature vectors belong. The predicted classes are the

% class to which the input feature vectors are predicted to belong to,

% based on a prediction algorithm.

% The length of actual class vector and the predicted class vector need to

% be the same. If they are not the same, an error message is displayed.

% 3. classlist

% The third input provides the list of all the classes {p,n,...} for which

% the classification is being done. All classes are numbers.

% 4. per = 1/0 (default = 0)

% This parameter when set to 1 provides the values in the confusion matrix

% as percentages. The default provides the values in numbers.

%

% Example:

% >> a = [ 1 2 3 1 2 3 1 1 2 3 2 1 1 2 3];

% >> b = [ 1 2 3 1 2 3 1 1 1 2 2 1 2 1 3];

% >> Cf = cfmatrix(a, b);

%

% [Avinash Uppuluri: avinash_uv@yahoo.com: Last modified: 08/21/08]

% If classlist not entered: make classlist equal to all

% unique elements of actual

if (nargin < 2)

error(\'Not enough input arguments.\');

elseif (nargin == 2)

classlist = unique(actual); % default values from actual

per = 0; % default is numbers and input 1 for percentage

elseif (nargin == 3)

per = 0; % default is numbers and input 1 for percentage

end

if (length(actual) ~= length(predict))

error(\'First two inputs need to be vectors with equal size.\');

elseif ((size(actual,1) ~= 1) && (size(actual,2) ~= 1))

error(\'First input needs to be a vector and not a matrix\');

elseif ((size(predict,1) ~= 1) && (size(predict,2) ~= 1))

error(\'Second input needs to be a vector and not a matrix\');

end

format short g;

n_class = length(classlist);

line_two = \'----------\';

line_three = \'_________|\';

for i = 1:n_class

obind_class_i = find(actual == classlist(i));

prind_class_i = find(predict == classlist(i));

confmatrix(i,i) = length(intersect(obind_class_i,prind_class_i));

for j = 1:n_class

%if (j ~= i)

if (j < i)

% observed j predicted i

confmatrix(i,j) = length(find(actual(prind_class_i) == classlist(j)));

% observed i predicted j

confmatrix(j,i) = length(find(predict(obind_class_i) == classlist(j)));

end

end

line_two = strcat(line_two,\'---\',num2str(classlist(i)),\'-----\');

line_three = strcat(line_three,\'__________\');

end

if (per == 1)

confmatrix = (confmatrix ./ length(actual)).*100;

end

% output to screen

disp(\'------------------------------------------\');

disp(\'             Actual Classes\');

disp(line_two);

disp(\'Predicted|                     \');

disp(\'  Classes|                     \');

disp(line_three);

for i = 1:n_class

temps = sprintf(\'       %d             \',i);

for j = 1:n_class

temps = strcat(temps,sprintf(\' |    %2.1f    \',confmatrix(i,j)));

end

disp(temps);

clear temps

end

disp(\'------------------------------------------\');

调用:

a=importdata(\'E:\\\\actual_label.txt\');

b=importdata(\'E:\\\\predict_label.txt\');

Cf = cfmatrix(a, b)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值