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) |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· DeepSeek火爆全网,官网宕机?本地部署一个随便玩「LLM探索」
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 上周热点回顾(1.20-1.26)
· 【译】.NET 升级助手现在支持升级到集中式包管理