简介
分类矩阵是评估预测结果的重要工具,因为它使得结果更易于理解并说明错误预测的影响。通过查看此矩阵中每个单元的数量和百分比,可以快速查看模型做出准确预测的频率。
“分类矩阵”通过确定预测值是否与实际值匹配,将模型中的所有事例分为不同的类别。然后会对每个类别中的所有事例进行计数,并在矩阵中显示总计。 分类矩阵是评估统计模型的标准工具,有时被称为“混淆矩阵”。
混淆矩阵分析指标
matlab计算得到的混淆矩阵:
预测结果实际情况
低质
非低质
低质
非低质
为分析使用,转换得到的混淆矩阵:
低质
非低质
判断正确
[TP]
[TN]
判断错误
[FP]
[FN]
程序识别错误的总数:
N = TN + FP
程序识别正确的总数:
P = TP + FN
正确识别为“低质”的站点占识别错误总数的比例(值越大越好):
TP Rate = TP/N
未召回的“低质”站点占识别错误总数的比例:
FP Rate = FP/N
特征系数--误判为“低质”的站点占识别错误总数的比例:
Specificity = TN/N
召回率--正确识别为“低质”的站点占识别正确总数的比例:
Recall = TP/P
精密度--正确识别为“低质”的站点占“低质”站点总数的比例(值越大越好):
Precision = TP/(TP+FP)
准确率--模型判断为“低质”的站点占测试集总量的比例:
Accuracy = (TP+TN)/(P+N)
g-mean1 = (TP*P) 的开方 g-mean2 = (TP*TN) 的开方MatLab计算混淆矩阵指标的函数
传入参数为单分类的 2 × 2 混淆矩阵,输出上一节所列举的各个指标的值。Matlab 函数:
function [] = confmatCal(confmat)TP = confmat(1,1);TN = confmat(1,2);FP = confmat(2,1);FN = confmat(2,2);N = TN + FP;P = TP + FN;fprintf('%s %dn','TP =', TP);fprintf('%s %dn','TN =', TN);fprintf('%s %dn','FP =', FP);fprintf('%s %dnn','FN =', FN);fprintf('%s %dn','N =', N);fprintf('%s %dnn','P =', P);fprintf('%s %dn','TP_Rate =', TP/N);fprintf('%s %dn','FP_Rate =', FP/N);fprintf('%s %dn','Specificity =', TN/N);fprintf('%s %dn','Recall =', TP/P);fprintf('%s %dn','Precision =', TP/(TP+FP) );fprintf('%s %dnn','Accuracy =', (TP+TN)/(P+N) );fprintf('%s %dn','g_mean1 =', sqrt(TP*P) );fprintf('%s %dn','g_mean2 =', sqrt(TP*TN) );end
MatLab计算混淆矩阵
例子:
>> a= [1 1 1 2 2 2 3 3 33];
>> b= [1 1 2 2 2 2 3 1 33];
>> c =confusionmat(a,b)
c =
210
030
103
说明:
上面例子中,1、2、3代表三个分类,a矩阵是实际的分类值,b矩阵为模型计算所得的分类值。由通过confusionmat函数,计 算得到的混淆矩阵可见:
实际属于“1”分类的有3个(第一行的加和),其中模型计算正确的有2个(c[1,1]=2),另外1个模型误判为“2”分类(c[1,2]=1);
实际属于“2”分类的有3个(第二行的加和),3个全部计算正确(c[2,2]=3);
实际属于“3”分类的有4个(第三行的加和),其中模型计算正确的有3个(c[3,3]=3),另外1个模型误判为“1”分类(c[3,1]=1)。