如何计算分类器的精度?并显示混淆矩阵。

29个视图(过去30天)
蒙希达P
蒙希达P 2020年1月28日
回答: 希瑟姆2020年9月25日
我已经实现了一个简单的人脸识别代码。如何计算它的准确度?以及如何绘制混淆矩阵。
clc
清楚的
%加载图像数据集
faceDatabase=imageSet(“facedatabaseatt”,“递归”);
%分成训练集和测试集
[training,test]=分区(faceDatabase[0.8 0.2]);
%为训练集提取HOG特征
特征计数=1;
对于i=1:尺寸(培训,2)
对于j=1:培训(i).计数
trainingFeatures(featureCount,:)=extractHOGFeatures(读取(training(i),j));
%imshow(阅读(培训(i),j));
%暂停(0.0011);
trainingLabel{featureCount}=培训(i).说明;
featureCount=featureCount+1;
终止
personIndex{i}=培训(i).说明;
终止
%创建40类分类器
面分类器=Fitchnn(训练特征,训练标签);
%测试
对于人=1:40
对于j=1:测试(人)。计数
查询图像=读取(测试(人),j);
queryFeatures=extractHOGFeatures(queryImage);
actualLabel=预测(faceClassifier、queryFeatures)%实际标签
C=试验(人)。说明;%预测标签
predictedLabel=cellstr(C)%转换成单元阵列
终止
终止

答复(1)

希瑟姆
希瑟姆 2020年9月25日
confusionmat将混淆矩阵计算为。
[cm,订单]=confusionmat( 实际标签 , 预测标签 );
或者,你可以使用我的功能。
函数[c_矩阵]=confusionmat1(实际,预测)
%它计算混淆矩阵
classList=唯一(实际);
N=长度(类列表);
cm=零(N,N);
对于j=1:长度(实际)
posClassGT=strmatch(实际{j},类列表,'exact');
posClass=strmatch(predict{j},classList,'exact');
cm(posClassGT,posClass)=cm(posClassGT,posClass)+1;
终止
终止

社区寻宝

在MATLAB Central中查找宝藏,了解社区如何帮助您!

开始打猎吧!