模式识别上机文档格式.docx
- 文档编号:20169148
- 上传时间:2023-01-17
- 格式:DOCX
- 页数:13
- 大小:507.08KB
模式识别上机文档格式.docx
《模式识别上机文档格式.docx》由会员分享,可在线阅读,更多相关《模式识别上机文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
或各类出现的先验概率P(ωi)和类条件概率密度函数p(x|ωi)已知
2、两类分类的最小错误率Bayes分类决策规则的后验概率形式:
设N个样本分为两类ω1,ω2。
每个样本抽出n个特征,
x=(x1,x2,x3,…,xn)T
其中,P(ωi|x)为状态后验概率。
由Bayes公式:
两类分类的贝叶斯决策函数:
三实例说明:
一数据集有两类,每个样本有两个特征,类别1(class1.txt文件)含有150个样本,类别2(class2.txt文件)含有250个样本(.txt文件可以直接在Matlab中读入),分别取类别1的前100个和类别2的前200个样本作为训练样本,剩下的作为测试样本。
要求:
(1)根据基于最小错误率的贝叶斯决策理论设计分类器;
(2)叙述实验具体步骤,给出所设计的分类器对训练样本和测试样本的错误率;
(3)提交的作业需包含Matlab程序代码
(4)绘制分类结果(包含决策边界)的图像
1、实验原理
多元正太分布的概率密度函数由下式定义
由最小错误概率判决规则,可得采用如下的函数作为判别函数
这里,
为类别
发生的先验概率,
的类条件概率密度函数,而N为类别数。
设类别
,i=1,2,……,N的类条件概率密度函数
,i=1,2,……,N服从正态分布,即有
~
,那么上式就可以写为
由于对数函数为单调变化的函数,用上式右端取对数后得到的新的判别函数替代原来的判别函数
不会改变相应分类器的性能。
因此,可取
显然,上式中的第二项与样本所属类别无关,将其从判别函数中消去,不会改变分类结果。
这样,判别函数
可简化为以下形式
2、实验步骤
(1)求出两类样本的均值
(2)求每一类样本的协方差矩阵
式中,l代表样本在类中的序号,其中
代表
类的第l个样本,第j个特征值;
类的
个样品第j个特征的平均值
类的第l个样品,第k个特征值;
个样品第k个特征的平均值。
类的协方差矩阵为
(3)计算出每一类的协方差矩阵的逆矩阵
以及协方差矩阵的行列式
(4)求出每一类的先验概率
(5)将各个数值代入判别函数
判别边界为
3、实验结果
根据matlab的计算结果可得
类别1训练样本的错误率为4%,类别2训练样本的错误率为5%;
类别1测试样本的错误率为6%,类别2训练样本的错误率为4%。
实验图
图1训练样本分类结果
如上图所示,“.”代表类别1的训练样本,“*”代表类别2的训练样本,绿线为决策边界;
图2测试样本分类结果
如上图所示,“.”代表类别1的测试样本,“*”代表类别2的测试样本,绿线为决策边界;
4、实验程序代码
functiong=pattern(x,y)
%clear;
S1=load('
e:
\lwz\class1.txt'
);
%原始数据class1导入S1
S2=load('
\lwz\class2.txt'
%原始数据class2导入S2
fori=1:
100
forj=1:
2
type1(i,j)=S1(i,j);
%将class1的前100个数据导入type1当中,作为训练样本
end
end
200
type2(i,j)=S2(i,j);
%将class2的前200个数据导入type2当中,作为训练样本
%求训练样本的均值
sumx1=sum(type1,1);
meanx1=sumx1(1,1)/100;
meany1=sumx1(1,2)/100;
sumx2=sum(type2,1);
meanx2=sumx2(1,1)/200;
meany2=sumx2(1,2)/200;
%求协方差矩阵
z1(2,2)=0;
z1(1,1)=z1(1,1)+(type1(i,1)-meanx1)^2;
z1(1,2)=z1(1,2)+(type1(i,1)-meanx1)*(type1(i,2)-meany1);
z1(2,1)=z1(2,1)+(type1(i,2)-meany1)*(type1(i,1)-meanx1);
z1(2,2)=z1(2,2)+(type1(i,2)-meany1)^2;
z1(1,1)=z1(1,1)/99;
z1(1,2)=z1(1,2)/99;
z1(2,1)=z1(2,1)/99;
z1(2,2)=z1(2,2)/99;
z2(2,2)=0;
z2(1,1)=z2(1,1)+(type2(i,1)-meanx2)^2;
z2(1,2)=z2(1,2)+(type2(i,1)-meanx2)*(type2(i,2)-meany2);
z2(2,1)=z2(2,1)+(type2(i,2)-meany2)*(type2(i,1)-meanx2);
z2(2,2)=z2(2,2)+(type2(i,2)-meany2)^2;
z2(1,1)=z2(1,1)/199;
z2(1,2)=z2(1,2)/199;
z2(2,1)=z2(2,1)/199;
z2(2,2)=z2(2,2)/199;
z1_inv=[];
z1_det=[];
z2_det=[];
z1_inv=inv(z1);
%求协方差矩阵的逆
z2_inv=inv(z2);
%求协方差矩阵的行列式
z1_det=det(z1);
z2_det=det(z2);
%求出两类样本的先验概率
p1=100/300;
p2=200/300;
symsxy;
g=(-0.5)*[x-meanx1,y-meany1]*z1_inv*[x-meanx1;
y-meany1]+log(abs(z1_det))*0.5+log(p1)-((-0.5)*[x-meanx2,y-meany2]*z2_inv*[x-meanx2;
y-meany2]+log(abs(z2_det))*0.5+log(p2))
%画图命令
ezplot(pattern);
fori=101:
150
plot(S1(i,1),S1(i,2),'
.'
)
holdon
fori=201:
250
plot(S2(i,1),S2(i,2),'
*'
End
最近邻分类器:
ClickandClassify
最近邻分类器在eCognition中指需要用户指定训练样本的分类法,与成员函数分类器相区别。
eCognition用“ClickandClassify”
来形容其操作简便。
用户手册中推荐的针对这种指定训练样本的分类方法的分类策略是:
1、先选定少量图斑(对象)作为样本,一开始选定的每一类的样本数为1-3个,选完少量样本后就可以进行第一次分类;
2、然后不断重复以下步骤,直到得出满意结果:
①、纠正那些被错分的或未被分类的(unclassified)图斑,指定正确类别后,作为样本对象添加到训练样本集中(要小心操作,
确保无误);
②进行分类。
【注意】:
1、有些时候,新的样本对象的加入会显著影响到分类结果,有可能原来正确的分类结果,在调整、纠正加入新的样本对象后,
许多图斑反而从正确的分类划归为错误的类别了,这时候也不要担心,还是继续重复上面的步骤,重复操作……这样进行下去
以后,就能逐步在特征空间中建立起区分各类别的边界,即使这些类别在特征空间中的分布是不规则的且不连续的(离散的),
最近邻函数也能对付。
2、利用ClickandClassify的方法,用户可能很快就得到了满意的分类结果,也有可能你达到了所选择的特征空间(注意:
特征空间也是用户自己可以定义的)所能区分的极限,再添加新的训练样本也无济于事了,分类结果也不会有显著改善了,这
也没有关系,咱们可以利用这个得到的分类结果作为下一步“基于上下文信息的分类”的基础数据,在类别层次结构(ClassHierarchy)
里面添加子类,以作进一步的细分。
Tour1就是这样的一个例子。
二、关于最近邻函数
1、标准最近邻(SNN)与普通最近邻(NN)的差别:
两者的区别在于它们的作用域不同。
NearestNeighbor的特征空间可以为
每个类别单独定义,即“class-specific”,而StandardNearestNeighbor则不然,整个Project,SNN的特征空间的定义是唯一的,
所有用到SNN的类别,它们的SNN的特征空间全是一样的,而且对每一个类别不可能定义一个以上的标准最邻近函数。
SNN和NN的
特征空间中一般都不涉及“Class-relatedfeatures”,因为它们需要的是一个绝对的参考系,而不是相对的,避免“循环依赖”现象的出现
。
即使用到类相关特征,也会受到如下限制:
(东阳何生的学习笔记)
①、如果一个类别的定义中用到了最邻近函数,而这个最邻近函数的特征空间中利用了“Class-relatedfeatures”,那么这个类别
不能用“Similarityof”特征;
②、如果一个类别的定义中用到了最邻近函数,而这个最邻近函数的特征空间中利用了“Class-relatedfeatures”,那么这个类别
不能有子类。
即不能生育或是丁克一族,相当于二叉树中的“叶子节点”,所以这些类别也叫“叶子类别”;
③、如果一个类别的定义中用到了最邻近函数,而这个最邻近函数的特征空间中利用了“Class-relatedfeatures”,那么
“Class-relatedfeatures”中所参考的类别不能是它自己或其父类。
2、如果在一个ClassHierarchy中用到了SNN或NN,那么,当保存ClassHierarchy文件的时候,它们所定义的特征空间也同时
被保存在这个类层次结构文件中,但是,用户选择的训练样本并没有被保存,也就是说,如果调入一个dkb文件,以前选的训练
样本是不包括在这个文件中的。
3、如果事先定义好了一个ClassHierarchy(父类子类统统定义完毕),然后去选择训练样本,那么,用户选择的子类的训练样本
自动也算是其父类的训练样本,当然,用户也可以单独为父类指定其训练样本。
4、用户手册一再建议,分类时先为每一类仅仅选择少量的样本,1-3个足矣,然后分类,出来结果后,再添加错分或漏分的新样
本,再分类,再调整……逐步调整,直至得到最佳分类结果。
5、在以前的学习笔记中我曾经认为TTAMask和Samples是一回事,因为两者之间可以互相转换(0008:
城市草地versus乡村草地),
现在看来,这点认识还得作一点修正,它们之间还是有一点细微的差别的,因为TTAMask有可能是从其他来源输入到
eCognition中来的,比如ArcGIS或ERDAS中转进来的数据,这时候,它的边界就不会跟eCognition分割生成的图斑的边界完全吻合,
因此,当“createsamplesfromTTAMask”的时候,就会弹出一个对话框让用户设置一个参数,默认值是0.75,表示如果一个图斑75%
的面积被TTAMask所定义的某一个类别的图斑所覆盖,那么它就属于这个类别的训练样本。
6、NNFunctionSlope(东阳何生的学习笔记)
感觉跟ENVI的光谱角制图(SpectralAngleMapper)里面光谱角的概念差不多。
Slope是一个阈值,它越大就越能和稀泥,有容乃
大,把性质差别很大的图斑划分到一个类别里面;
反之,Slope越小,则分得越精细,但是导致的问题就是会出现很多未被分类的
图斑(unclassifiedimageobjects),即通常所说的“漏分现象”,但是分类结果的稳定性会很好。
Slope的默认值是0.2,用户可以
自行定义。
7、特征空间优化(FeatureSpaceOptimization)
先为每个类别选择训练样本,选好之后,根据训练样本来计算这个类间可分性矩阵(ClassSeparationDistanceMatrix
ForSelectedFeatures)。
特征空间优化给用户提供了一个挑选、组合用来区分类别的最佳特征的有效工具,能根据
选定的样本,和用户自己挑选的特征,自动计算出类别间的可分性(Separability)。
这个对称矩阵上元素的值越大,代
表某两类间的可分性越好,以此来让用户选择组合最佳特征。
需要注意的是:
距离的计算仅仅依赖于选择的训练样本,
因此,训练样本的变化直接影响到计算结果
三、跟训练样本相关的几个工具
1、SampleEditor对话框
2、SampleNavigation工具栏
和SampleEditor配合使用,激活之后,在SampleEditor中选中某一类,然后鼠标点击直方图中的某一方块(slot),在图像
窗口中,特征值等于直方图中那方块值的训练样本则被选中,并高亮显示。
如果这一特征值的训练样本有好多个,用户则可
通过下拉框自行选择。
3、SampleSelectionInformation对话框
显示了用户当前选中的图斑与各个类别的已有训练样本之间的距离,以及归属于各类别的成员函数值。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模式识别 上机
![提示](https://static.bdocx.com/images/bang_tan.gif)