混淆矩阵编程计算方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

误差矩阵(混淆矩阵)评价法
基于误差矩阵的分类精度评价方法
误差矩阵(error matrix)又称混淆矩阵(confusion matrix),是一个用于表示分为某一类别的像元个数与地面检验为该类别数的比较阵列。

通常,阵列中的列代表参考数据,行代表由遥感数据分类得到的类别数据。

参考数据
设n为遥感分类精度评价中总的样本数,k为总的分类类别数目,
nij为RS中被分为i类而在参考类别中属于j类的样本数目。

则,在RS中被分为i类的样本数目为:ni+=∑nij (j=1~k)
参考类别为j的样本数目为:n+j=∑nij (i=1~k)
总体精度(overall accuracy)为:OA =(∑nii)/n (i=1~k)
生产者精度(producer’s accuracy)为:PAj = njj / n+j
用户精度(user’s accuracy)为:UAi = nii / ni+
Kappa分析,统计意义上反映分类结果在多大程度上优于随机分类结果,可以用于比较两个分类器的误差矩阵是否具有显著差别。

Kappa分析产生的评价指标被称为K统计值:
[转载]erdas分类精度评价
三Erdas中的分类精度评价
1.打开分类结果(img)
2. Classifier >Accuracy Assessment
3. Accuracy Assessment窗口中,open >选择分类结果(img)
4. View > select viewr选择打开的影像(img)的窗口
5. Edit > create /add random point设置Number of points (生成多少个随机点),select classes,可以选择只在某些类中生成随机点
6. Edit >Show Class Values
7. View > Show All
8.在Reference列中输入该点的参考类别号
9. Report > Accuracy Report
该报告中有生产者精度,用户精度,总体精度,Kappa等数值。

对一帧遥感影像进行专题分类后需要进行分类精度的评价,而进行评价精度的因子有混淆矩阵、总体分类精度、Kappa系数、错分误差、漏分误差、每一类的制图精度和用户精度。

1、混淆矩阵(ConfusionMatrix): 主要用于比较分类结果和地表真实信息,可以把分
类结果的精度显示在一个混淆矩阵里面。

混淆矩阵是通过将每个地表真实像元的位置和分类与分类图象中的相应位置和分类像比较计算的。

混淆矩阵的每一列代表了一个地表真实分类,每一列中的数值等于地表真实像元在分类图象中对应于相应类别的数量,有像元数和百分比表示两种。

2、总体分类精度(Overall Accuracy): 等于被正确分类的像元总和除以总像元数,地表真实图像或地表真实感兴趣区限定了像元的真实分类。

被正确分类的像元沿着混淆矩阵的对角线分布,它显示出被分类到正确地表真实分类中的像元数。

像元总数等于所有地表真实分类中的像元总和。

3、Kappa系数:是另外一种计算分类精度的方法。

它是通过把所有地表真实分类中的像元总数(N)乘以混淆矩阵对角线(Xkk)的和,再减去某一类中地表真实像元总数与该类中被分类像元总数之积对所有类别求和的结果,再除以总像元数的平方差减去某一类中地表真实像元总数与该类中被分类像元总数之积对所有类别求和的结果所得到的。

4、错分误差:指被分为用户感兴趣的类,而实际上属于另一类的像元,错分误差显示在混淆矩阵的行里面。

5、漏分误差:指本属于地表真实分类,但没有被分类器分到相应类别中的像元数。

漏分误差显示在混淆矩阵的列里。

6、制图精度:指假定地表真实为A类,分类器能将一幅图像的像元归为A的概率
7、用户精度:指假定分类器将像元归到A类时,相应的地表真实类别是A的概率。

在ENVI中,选择主菜单->Classification->Post Classification->Confusion Matrix->Using Ground Truth ROIs。

将分类结果和ROI输入,软件会根据区域自动匹配,如不正确可以手动更改。

点击ok后选择报表的表示方法(像素和百分比),就可以得到精度报表。

对分类结果进行评价,确定分类的精度和可靠性。

有两种方式用于精度验证:一是混淆矩阵,二是ROC曲线,比较常用的为混淆矩阵,ROC曲线可以用图形的方式表达分类精度,比较形象。

对一帧遥感影像进行专题分类后需要进行分类精度的评价,而进行评价精度的因子有混淆矩阵、总体分类精度、Kappa系数、错分误差、漏分误差、每一类的制图精度和拥护精度。

混淆矩阵中的几项评价指标计算方法,如下:
l总体分类精度
等于被正确分类的像元总和除以总像元数。

被正确分类的像元数目沿着混淆矩阵的对角线分布,总像元数等于所有真实参考源的像元总数,如本次精度分类精度表中的Overall Accuracy = (1849/2346)
78.8150%。

lKappa系数
它是通过把所有真实参考的像元总数(N)乘以混淆矩阵对角线(XKK)的和,再减去某一类中真实参考像元数与该类中被分类像元总数之积之后,再除以像元总数的平方减去某一类中真实参考像元总数与该类中被分类像元总数之积对所有类别求和的结果。

l错分误差
指被分为用户感兴趣的类,而实际属于另一类的像元,它显示在混淆矩阵里面。

本例中,林
地有419个真实参考像元,其中正确分类265,12个是其他类别错分为林地(混淆矩阵中林地一行其他类的总和),那么其错分误差为12/419=2.9%。

l漏分误差
指本身属于地表真实分类,当没有被分类器分到相应类别中的像元数。

如在本例中的耕地类,有真实参考像元465个,其中462个正确分类,其余3个被错分为其余类(混淆矩阵中耕地类中一列里其他类的总和),漏分误差为3/465=0.6%
l制图精度
是指分类器将整个影像的像元正确分为A类的像元数(对角线值)与A类真实参考总数(混淆矩阵中A类列的总和)的比率。

如本例中林地有419个真实参考像元,其中265个正确分类,因此林地的制图精度是265/419=63.25%。

l用户精度
是指正确分到A类的像元总数(对角线值)与分类器将整个影像的像元分为A类的像元总数(混淆矩阵中A类行的总和)比率。

如本例中林地有265个正确分类,总共划分为林地的有277,所以林地的用户精度是265/277=95.67%。

首先你做分类的时候要选好分类的地区影像,一般要求要有地面数据支持,也就是说要知道你待分类的影像的地物类别,这样在你的分类完成后才可能评价你的分类精度,
分类精度的评价一般是用混淆矩阵来评价,从混淆矩阵中算出总精度和Kappa系数就可作为分类精度了。

分类的精度,一般两种方法,实地调查;高分辨率的影像检验低分辨率影像的分类。

%混淆矩阵(confusion matrix):是一个用于表示分为某一类别的像元个数与地面检验为该类别数的比较阵列。

%通常,阵列中的列代表参考数据,行代表由遥感数据分类得到的类别数据。

clear,clc;
disp('-----------------------------------------程序运行部分------------------------------------------')
a= [1 1 1 1 1 1 2 2 2 2 3 3 3 3 3 3 ]; %1、2、3代表三个分类,假如分别比作林地,田地,草地,a矩阵是实际的分类值
b= [1 1 1 1 2 3 2 1 2 2 3 3 1 3 3 2 ]; %b矩阵为模型计算所得的分类值disp('混淆矩阵:')
c=confusionmat(a,b) %由通过confusionmat函数,计算得到的混淆矩阵可见
%总体分类精度等于被正确分类的像元总和除以总像元数。

被正确分类的像元数目沿着
%混淆矩阵的对角线分布,总像元数等于所有真实参考源的像元总数
h_s=size(c,1); %混淆矩阵行数值
ZQ_h=0;
for i=1:h_s
ZQ_h=ZQ_h+c(i,i) ; %混淆矩阵的对角线求和
end
Qb_h=sum(c(:)); %总像元数
disp('总体分类精度(Overall Accuracy):')
Q_A=ZQ_h/Qb_h %总体分类精度
% Kappa系数,它是通过把所有真实参考的像元总数(N)乘以混淆矩阵对角线(XKK)的和,
%再减去某一类中真实参考像元数与该类中被分类像元总数之积之后,再除以像元总数的平方减去
%某一类中真实参考像元总数与该类中被分类像元总数之积对所有类别求和的结果
H=sum(c,2); %混淆矩阵各行求和得到一个列向量
b_h=0;
L=sum(c); %混淆矩阵各列求和得到一个行向量
for i=1:h_s
b_h=b_h+H(i,1)*L(1,i) ; %某一类中真实参考像元数与该类中被分类像元总数之积之和
K_a=(Qb_h*ZQ_h-b_h)/(Qb_h^2-b_h) ; %由公式求得 Kappa系数
end
disp('Kappa系数:')
K_a %错分误差(Commission)指被分为用户感兴趣的类,而实际属于另一类的像元
for i=1:h_s
C_n(1,i)=L(1,i)-c(i,i); %其他类别错分为该类别的总和end
for i=1:h_s
Co_n(1,i)=C_n(1,i)/L(1,i); %错分误差,其他类别错分为该类别的总和与总划为该类别的总和之比
end
disp('错分误差:')
Co_n %漏分误差(Omission)指本身属于地表真实分类,当没有被分类器分到相应类别中的像元
%数与真实参考总数(混淆矩阵中A 类行的总和)的比率
for i=1:h_s
O_n(i,1)=H(i,1)-c(i,i);
end
for i=1:h_s
Oi_n(1,i)=O_n(i,1)/H(i,1) ; %漏分误差
end
disp('漏分误差:')
Oi_n %制图精度(Prod.Acc)是指分类器将整个影像的像元正确分为A类的像元数(对角线值)与A类
%真实参考总数(混淆矩阵中A类行的总和)的比率
for i=1:h_s
j_d(1,i)=c(i,i)/H(i,1);
end
disp('制图精度:')
j_d %用户精度,是指正确分到A类的像
元总数(对角线值)与分类器将整个影像的像元分为A类的像元
%总数(混淆矩阵中A类列的总和)
比率
L=sum(c) ;
for i=1:h_s
y_h(1,i)=c(i,i)/L(1,i);
end
disp('用户精度:')
y_h
[filename,filepath]=uiputfile('*.xls','请选择要保存到的文件...'); %事先
要建个xls的文件
str=[filepath filename]; xlswrite('shuchujieguo',zuobiao);
% save 'b.xls' B -ascii。

相关文档
最新文档