模式识别作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四章模式识别作业
姓名:谢雪琴学号:2010222055
1、阐述线性判别函数的几何意义和用于分类的实用价值。
答:线性判别函数的几何意义:
利用线性判别函数进行决策,它可以看成是两类数据沿着一个向量投影,在向量上存在一个超平面,能将两类数据分隔开,即两类数据能够完全被区别。线性判别函数可以是最小错误率或最小风险意义下的最优分类器。
它利用一个超平面把特征空间分割成为两个决策区域,超平面的方向由权向量W确定,它的位置由阈权值w0确定,判别函数g(x)正比于x点到超平面的代数距离(带正负号),当x在H正侧时,g(x)>0,当在H负侧时,g(x)<0;
使用价值:线性分类器是最简单的分类器,但是样本在某些分布情况时,线性判别函数可以成为最小错误率或最小风险意义下的最优分类器。而在一般情况下,线性分类器只能是次优分类器,但是因为他简单而且在很多情况下效果接近最优,所以应用比较广发,在样本有限的情况下有时甚至能取得比复杂分类器更好地效果
2、参考教材4.3,完成线性判别分析(LDA)的Matlab实现,并用Fisher's Iris Data【注】进行验证(考虑其中的2
类即可)。
注:Fisher's Iris Data: Fisher's iris data consists of measurements on the sepal length, sepal width, petal length, and petal width of 150 iris specimens. There are 50 specimens from each of three species. 在Matlab中调用load fisheriris 可以得到该数据,meas为150×4的数据矩阵,species为150×1的cell矩阵,含有类别信息。
3、试推导出感知器算法的迭代求解过程,尝试用Matlab实现,并用Fisher's Iris Data进行验证(考虑2类分类
即可)。
clc;
clear all;
close all;
load fisheriris
ClassLabel = unique(species) ;%选择唯一的类别
data=meas(:,:);
%分类
groups1 = ismember(species,'setosa');%根据ismember查找到与setosa类别相同的数据与否,返回1或者0
groups2 = ismember(species,'versicolor');%根据ismember查找到与versicolor类别相同的数据与否,返回1或者0
%find()找到与目标类别相同的数据的下标
Class1num = find(groups1==1);%在species找到与setosa相同的数据
Class2num= find(groups2==1);%在species找到与versicolor相同的数据
data=meas(1:150,1:4);%取meas前100行数据
data1 = meas(Class1num,:);%data1(50*4)存放setosa类别所有数据的矩阵
data2 = -meas(Class2num,:);%data2(50*4)存放versicolor类别所有数据的矩阵
% 求均值
m1 = mean(data1);%求data1的均值
m2 = mean(data2);%求data2的均值
%计算类内散度Si和总类内散度Sw
S1=(data(1,:)-m1)'*(data1(1,:)-m1);
S2=(data2(1,:)-m2)'*(data2(1,:)-m2);
for i=2:50
S1=S1+(data1(i,:)-m1)'*(data1(i,:)-m1);
S2=S2+(data2(i,:)-m2)'*(data2(i,:)-m2);
end
Sw=S1+S2;
%计算类间离散度Sb
Sb=(m1-m2)'*(m1-m2);
%计算投影方向w
w=inv(Sw)*(m1-m2)';
%投影后的样本为
for i=1:50
DATA1(i)=w'*data1(i,:)';
end
for i=1:50
DATA2(i)=w'*data2(i,:)';
end
%计算分界阈值点
M1=mean(DATA1);
M2=mean(DATA2);
w0=-(M1+M2)/2;
%根据感知器定义分别将w和data的维数增加一维
w1=[w0 w']';
data1=[ones(150,1) data];
%产生一个与data相同大小的零矩阵
G=zeros(150,1);
% 感知器中当判别函数小于0时,采用迭代函数修正系数
for k=1:150
G(k,1)= perceptron(data1(k,:),w1);
for k=1:150
if(G(k,1)<0)
%迭代求解过程
w1=w1+data1(k,:)';
end
end
end
disp('修正后的支持向量机是');
w1
4、试推导出最小平方误差判别规则的两种求解方法,尝试用Matlab实现,并用Fisher's Iris Data进行验证(考
虑2类分类即可)。