理解混淆矩阵.docx

上传人:b****5 文档编号:28753767 上传时间:2023-07-19 格式:DOCX 页数:9 大小:26.75KB
下载 相关 举报
理解混淆矩阵.docx_第1页
第1页 / 共9页
理解混淆矩阵.docx_第2页
第2页 / 共9页
理解混淆矩阵.docx_第3页
第3页 / 共9页
理解混淆矩阵.docx_第4页
第4页 / 共9页
理解混淆矩阵.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

理解混淆矩阵.docx

《理解混淆矩阵.docx》由会员分享,可在线阅读,更多相关《理解混淆矩阵.docx(9页珍藏版)》请在冰豆网上搜索。

理解混淆矩阵.docx

理解混淆矩阵

理解混淆矩阵

混淆矩阵是描述分类器/分类模型的性能的表。

它包含有关分类器完成的实际和预测分类的信息,此信息用于评估分类器的性能。

请注意,混淆矩阵仅用于分类任务,因此不能用于回归模型或其他非分类模型。

在我们继续之前,让我们看看一些术语。

・分类器:

分类器基本上是一种算法,它使用从训练数据中获得的〃知识〃来将输入数据映射到特定类别或类别。

分类器是二元分类器或多类/多分类/多标签/多输出分类器。

•训练和测试数据:

在构建分类模型/分类器时,数据集被分成训练数据和具有相关标签的测试数据。

标签是预期的输出,它是数据所属的类别或类别。

・实际分类:

这是数据的预期输岀(标签)。

•预测分类:

这是分类器为特定输入数据提供的输岀。

一个例子:

假设我们已经建立了一个分类器来将汽车的输入图像分类为轿车或者不是轿车,我们在数据集中有一个标记为非轿车的图像,但分类模型归类为轿车。

在这种情况下,实际分类是非轿车,而预测分类是轿车。

混淆矩阵的类型

有两种类型的混淆矩阵:

・2级混淆矩阵

•多级混淆矩阵

2级混淆矩阵

顾名思义,2类是一个描述二元分类模型性能的混淆矩阵。

我之前描述的轿车分类器的2级矩阵可以这样显示:

在此可视化中,我们有两个已概述的部分。

我们有预测的分类部分,其中包含每个类的两个子部分和实际的分类部分,每个部分有两个子部分。

如果这是您第一次看到混淆矩阵,我知道您必须想知道表中的所有变量代表什么。

实际上它很简单,我会尽可能简单地解释,但在我这样做之前,知道这些变量代表了许多预测是很重要的。

变量a属于Actual禾口Predicted分类部分中的Non・sedan子部分。

这意味着一个预测所做的正确分类的非轿车[作为非轿车]的图像。

变啟b

变量b属于实际分类部分中的非轿车子部分和预测分类部分中的轿车子部分。

这意味着进行了b预测,将非轿车的

图像错误地分类为轿车。

变量c

变量?

落在下的轿车在次节实际分类段和下的非轿车在小节预测分类部分。

这意味着进行了C预测,将轿车的图像错误地分类为非轿车。

变量d

变量d属于实际和预测分类部分中的轿车子部分。

这意味着d预测所做的正确分类轿车的图像[作为轿车。

容易腻的柠檬挤压。

(我希望?

⑥)

但是等等,我们还没有完成.......

现在我们的轿车分类器有我们的混淆矩阵,但这如何帮助我们确定分类器的性能/效率?

为了使用混淆矩阵及其包含的数据确定分类器的性能,我们可以使用混淆矩阵中的数据(变量)来计算一些标准度

里。

2级混淆矩阵的准确性是正确预测总数与预测总数之比。

从我们的混淆矩阵中,我们可以看到a和d预测正确地对输入图像进行了分类,并且b和c预测是对输入图像进行错误分类的。

因此,准确度可以计算为:

精度二(A+d)/(A+B+C+d)

其中,a+d是正确预测的总数,而a+b+c+d是预测的总数。

真阳性,真阴性,假阳性和假阴性

与我们的分类器和混淆矩阵有关:

真阳性(TP)是轿车图像被正确分类[作为轿车]的预测数里。

从我们的混淆矩阵中,变量d也是TP。

真阴性(TN)是非轿车图像被正确分类[作为非轿车]的预测数量。

从我们的混淆矩阵中,变量a也是我们的TNo

假阳性(FP)是非轿车图像被错误地归类为轿车的预测数里。

从我们的混淆矩阵中,变量b也是我们的FP。

假阴性(FN)是轿车图像被错误地归类为非轿车的预测数里。

从我们的混淆矩阵中,变量C也是我们的FNo

真阳性率是真阳性与真阳性和假阴性之和的比率。

它显示了分类器将轿车图像分类为轿车的频率。

因此,真阳性率可以计算为:

真阳性率=d/(c+d)

其中d是丁卩和©是卩”

真阳性率也称为回忆或敏感性

谋报率

假阳性率是假阳性与真阴性和假阳性之和的比率。

它显示了分类器将非轿车的图像分类为轿车的频率。

因此,误报率可以计算为:

假阳性率二b/(A+B)

其中一个是TN和b是FP

真正的负面率

真正的负面率是真实负面与真实负面和误报之和的比率。

它显示了分类器将非轿车的图像分类为非轿车的频率。

因此,误报率可以计算为:

真阴性率二一个/(A+B)

其中一个是TN和b是FP

真正的负面率也称为特异性。

假阴性率是假阴性与假阴性和真阳性之和的比率。

它显示了分类器将轿车图像分类为非轿车的频率。

因此,误报率可以计算为:

假阴性率=Q/(c+d)

其中d是丁卩和©是卩”

精确

精确度是真阳性与真阳性和假阳性之和的比率。

它显示了分类器将输入图像分类为轿车的频率,结果证明它是正确的。

计算方法如下:

精度=d/(B+d)

其中d是TP和b是FP

一个例子

假设我们将下面的图像作为分类器的混淆矩阵,我们可以使用上面定义的度量来评估其性能。

Confusionmatrix

从混淆矩阵中,我们可以看到:

・4252个预测被正确地分类为非轿车[作为非轿车]。

因此,我们的变量a和真负值(TN)是4252o

・有875个预测错误地将非轿车归类为轿车。

因此,我们的变量b和假阳性(FP)是875。

・有421个预测错误地将轿车归类为非轿车。

因此,我们的变量c和假阴性(FN)是421。

・制作了4706个正确分类轿车[作为轿车]的预测。

因此,我们的变量d和真阳性(TP)是4706

使用我们〃提取〃的数据,我们可以计算上述指标并确定分类器的性能。

我们已经可以告诉分类器表现良好,因为正确预测的数量大于不正确预测的数量。

准确性

精度=(a+d)/(a+b+c+d)

=(4252+4706)/(4252+875+421+4706)

=(8958)/(10254)

=0.8736102984201287

精度二0.87

因此,分类器的准确度为0.87,即87%

真阳性率

TPR=TP/(TP+FN)

=4706/(4706+421)

=4706/5127

=0.917885703140238

TPR=0.92

因此,分类器的真阳性率为0.92,为92%

误报率

FPR=FP/(FP+TN)

=875/(875+4252)

=875/5127

=0.1706651062999805

FPR=0.17

因此,分类器的假阳性率为0.17,为17%

真正的负面率

TNR=TN/(TN+FP)

=4252/(4252+875)

=5127分之4252

=0.8293348937000195

TNR=0.83

因此,分类器的真阴性率为0.83,即83%

假阴性率

FNR=FN/(FN+TP)

=421/(421+4706)

=5127分之421

=0.082114296859762

FNR=0.08

因此,分类器的假阴性率为0.08,为8%

精确

精度=TP/(TP+FP)

=4706/(4706+875)

=五千五百八十一分之四千七百。

=0.8293348937000195

精度=0.83

因此,分类器的精度为0.83,即83%

如何生成混淆矩阵

matplotlib・pyldbaspit

itertools

numpyasnp

skiearn.metricsconfusion_matrix

defplot_confusion_mdtrix(cm,classes,normalizeFalse):

pit.figure(figsize二(5,5))

pitimshow(cm,interpolation'nearest',cmappitcmBlues)

pit.title(,Confusionmatrix')

pitcolorbar()

tick_marksnparange(len(classes))

pitxticks(tick_marks,classes,rotation90)

pityticks(tick_marks,classes)

ifnormalize:

cmcmastypeCfloat5)cmsum(axis-l)[:

npnewaxis]

threshcmmax()2.

fori,jitertoolsproduct(range(cmshape[0]),range(cmshape[1])):

pittext(j,i,cm[i,j],

color"white"ifcm[i,j]threshelse"black")

pit.tight_layout()

pit.ylabel(,Actual')

pit.xlabel(,Predicted')

dict_characters{0:

Non-sedan',1:

Sedan5}

y_predmodelpredict(test_data)

y_pred_classesnpargmax(y__pred,axis1)

y_truenpargmax(test_labels,axis=l)

confusion_matconfusion_matrix(y_true,y_pred_classes)

plot_confusion_matrix(confusion_mat,classeslist(dict_cha:

rdcte:

rsvalues()))

为了生成混淆矩阵,我们利用numpy,matplotlib.pylab来显示矩阵,来自skleam.metrics包的confusion_matrix函数生成混淆矩阵,使用itertools进行循坏/迭代。

首先,我们定义一个函数plotconfusionmatrix,它将生成的混淆矩阵和期望/可能的类作为参数,并使用matplotlib.pylab来显示混淆矩阵。

在摘录中,我们假设我们已经拥有经过培训的模型和培训以及相关标签的测试数据。

dict_characters是两个可能的类的字典,在我们的例子中,〃非轿车〃和〃轿车气

y_pred是分类器在测试数据模型上完成的预测数组是我们训练有素的分类器/算法test_data是我们的测试数据

ypredclasses是一个相对丁y_pred的索引的numpy数组,y_pred是分类器在测试中完成的预测数组数据。

ytrue是相对]:

test_data的实际/正确标签的numpy索引数组。

test_labels是测试数据的标签列表。

使用上面的内容,我们使用sklearn.metrics中的confusionmatrix函数生成混淆矩阵,传入正确的值

(y_true)和分类器返回的估计值(y_pted_classes),并

将生成的混淆矩阵存储在变量confusionmat中。

然后,我们将混淆矩阵(confusion_mat)和我们可能的类的值歹|J表(dietcharacters)作为plotconfusionmatrix函数的参数传递,然后将混淆矩阵可视化。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1