《数据分析》实验报告三
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
>> d=(2*p^2+3*p-1)*(1/(n1-1)+1/(n2-1)-1/(n-k))/(6*(p+1)*(k-1));
>> p1=n1/n;p2=n2/n;
>> m1=mean(G1);m2=mean(G2);
>> s1=cov(G1);s2=cov(G2);
>> s=((n1-1)*s1+(n2-1)*s2)/(n-k);
P^=(N1+N2)/(m+n)
误判率的回代估计易于计算。但是,p^是由建立判别函数的数据反过来用作评估准则的数据而得到的。所以有偏,往往比真实误判率小。当训练样本容量较大时,p^可以作为真实误判率的一种估计。
4)交叉误判率估计是每次剔除一个样品,利用m+n-1个训练样本建立判别准则,再利用建立的准则对删除的样本进行判别。对每个样品做如上分析,以其误判的比例作为误判率,步骤;
N11=N11+1;
end
end
end
end
尝试引用非结构体数组的字段(我没辙了,实在不知道哪错了)
五、实验结果及分析
此题用贝叶斯判别法分析效果明显
说明:此部分的内容和格式可根据实验课程的具体需要、要求自行设计和确定相关栏目。
3.对第一类与第二类的先验概率分别为7/15、8/15,计算误判概率。
一、实验目的
1.熟练掌握MATLAB软件进行距离判别与贝叶斯判别的方法与步骤。
2.掌握判别分析的回代误判率与交叉误判率的编程。
3.掌握贝叶斯判别的误判率的计算。
二、实验原理
1)在MATLAB中,进行数据的判别分析命令为classify,其调用格式为:
>> N11=0;N22=0;
>> for k=1:n1
A=G1([1:k-1,k+1:n1],:);
N1=length(A(:,1));
M1=mean(A,1);s11=cov(A);
S1=((N1-1)*s11+(n2-1)*s2)/(N1+n2-k);
po1=N1/(n-1);po2=n2/(n-1);
for j=1:2
if w(j)==max(w)
disp(['待判样品属于第',num2str(j),'类污染']);
end
end
end
待判样品属于第2类污染
待判样品属于第2类污染
待判样品属于第2类污染
待判样品属于第2类污染
3、计算回代误判率
>> n11=0;n22=0;
>> for i=1:n1
w1(i,1)=m1*inv(s)*G1(i,:)'-1/2*m1*inv(s)*m1'+log(p1);
w2(i,2)=m2*inv(s)*G2(i,:)'-1/2*m2*inv(s)*m2'+log(p2);
for j=1:2
if w2(i,j)==max(w2(i,:))&j~=2
n22=n22+1;
end
end
end
>> poo=(n11+n22)/(n1+n2)
poo =
0.1000
4、计算交叉误判率
w1(i,2)=m2*inv(s)*G1(i,:)'-1/2*m2*inv(s)*m2'+log(p2);
for j=1:2
if w1(i,j)==max(w1(i,:))&j~=1
n11=n11+1;
end
end
end
>> for i=1:n2
w2(i,1)=m1*inv(s)*G2(i,:)'-1/2*m1*inv(s)*m1'+log(p1);
>> M=(n-k)*log(det(s))-((n1-1)*log(det(s1))+(n2-1)*log(det(s2)));
>> T=(1-d)*M
T =
-44.8237 + 0.9288i
>> C=chi2inv(0.95,f)
C =
32.6706
>> if T<chi2inv(0.95,f)
disp('两组数据协方差相等');
else
disp('两组数据协方差不相等');
end
两组数据协方差相等
2、构造判别函数,得出判别结果
>> for i=1:4
w(1)=m1*inv(s)*x(i,:)'-1/2*m1*inv(s)*m1'+log(p1);
w(2)=m2*inv(s)*x(i,:)'-1/2*m1*inv(s)*m2'+log(p2);
class=classify(sample,training,group’type’)
将sample数据的每一行指定到训练集training的一个类中。Sample和training必须具有相同的列数。group向量包含从1到组数的正整数,它指明训练营集中的每一行属于哪一类。group和training必须具有相同的行数。’type’是可选项,选’linear’表示总体为多元正态总体,选’quadratic’与’mahalanobis’。该函数返回class,它是一个与sample具有相同行数的向量。Class的每一个元素指定sample中对应元素的分类。通过计算sample和training中每一行的马氏距离,classify函数决定sample中的每一行属于哪一个分类。
课程名称
数据分析方法
课程编号
实验地点
系统建模与仿真实验室SL110
实验时间
校外指导教师
无
校内指导教师
实验名称
实验3 距离判别与贝叶斯判别分析
评阅人签字
成绩
实验数据与内容
我国山区某大型化工厂,在厂区及邻近地区挑选有代表性的15个大气取样点,每日4次同时抽取大气样品,测定其中含有的6种气体的浓度,前后共4天,每个取样点每种气体实测16次,计算每个取样点每种气体的平均浓度,数据见表4-8。气体数据对应的污染地区分类见表4-8中最后一列。现有两个取自该地区的4个气体样本,气体指标见表4-8中后4行,试解决以下问题:
for i=1:n1
w1(i,1)=M1*inv(S1)*G1(i,:)'-1/2*M1*inv(S1)*M1'+log(po1);
w1(i,2)=m2*inv(S1)*G1(i,:)'-1/2*m2*inv(S1)*m2'+log(po2);
for j=1:2
if w1(i.j)==max(W1(i,:))&j~=1
0.0740 0.0830 0.1050 0.1900 0.0200 1.0000]
>> G1=A([1:4 7:8 15],:);
>> G2=A([5:6 9:4 15],:);
>> n1=size(G1,1);
>> n2=size(G2,1);
>> n=n1+n2;
>> k=2;
>> p=6;
>> f=p*(p+1)*(k-1)/2;
从总体G1的训练样本开始,剔除其中一个样品,剩余的m-1个样品与G2中的全部样品建立判别函数;
用建立的判别函数对剔除的样品进行判别;
重复以上步骤,直到G1中的全部样本依次被删除又进行判别,其误判的样品个数记为N1*;
对G2的样品重复以上步骤,直到G2中的全部样本依次被删除又进行判别,其误判的样品个数记为N2*。
0.0520 0.0840 0.0210 0.0370 0.0071 0.0220]
>> x=[0.052 0.084 0.021 0.037 0.0071 0.022
0.0410 0.0550 0.1100 0.1100 0.0210 0.0073
0.0300 0.1120 0.0720 0.1600 0.0560 0.0210
于是交叉误判率估计为:
p^*=(N1*+N2*)/(m+n)
5)贝叶斯判别的有效性可以通过平均误判率来确定。判别准则的误判率在一定程度上依赖于所考虑的各总体间的差异程度。各总体间差异越大,就越有可能建立有效的判别准则。如果各总体间差异很小,做判别分析的意义不大。
三、实验步骤ቤተ መጻሕፍቲ ባይዱ
输入数据,判别两类总体的协方差阵是否相等,用马氏距离判断判别污染类别,计算回代误判率与交叉误判率,贝叶斯判别污染分类。
1.判别两类总体的协方差矩阵是否相等,然后用马氏距离差别这4个未知气体样本的污染类别,并计算回代误判率与交叉误判率;若两类总体服从正态分布,第一类与第二类的先验概率分别为7/15、8/15,利用贝叶斯判别样本的污染分类。
2.先验概率为多少时,距离判别与贝时斯判别相同?调整先验概率对判别结果的影响是什么?
2)贝叶斯判别方法步骤
第1步,验证两个总体服从二元正态分布;第2步,检验两个总体的协方差矩阵相等;估计两个总体的先验概率p1、p2;利用MATLAB软件计算。
3)回代误判率
设G1,G2为两个总体,x1,x2…和y1,y2…是分别来自G1,G2的训练样本,以全体训练样本作为m+n个新样品,逐个代入已建立的判别准则中判别其归属,这个过程称为回判。回判结果中若属于G1的样品被误判为属于G2的个数为N1个,属于G2的样品被误判为属于G1的个数为N2个,则误判估计为:
四、实验过程原始记录(数据、图表、计算等)
1、输入矩阵,计算协方差矩阵是否相等
>> A=[0.0560 0.0840 0.0310 0.0380 0.0081 0.0220
0.0400 0.0550 0.1000 0.1100 0.0220 0.0073
……
0.0690 0.0870 0.0270 0.0500 0.0890 0.0210
>> p1=n1/n;p2=n2/n;
>> m1=mean(G1);m2=mean(G2);
>> s1=cov(G1);s2=cov(G2);
>> s=((n1-1)*s1+(n2-1)*s2)/(n-k);
P^=(N1+N2)/(m+n)
误判率的回代估计易于计算。但是,p^是由建立判别函数的数据反过来用作评估准则的数据而得到的。所以有偏,往往比真实误判率小。当训练样本容量较大时,p^可以作为真实误判率的一种估计。
4)交叉误判率估计是每次剔除一个样品,利用m+n-1个训练样本建立判别准则,再利用建立的准则对删除的样本进行判别。对每个样品做如上分析,以其误判的比例作为误判率,步骤;
N11=N11+1;
end
end
end
end
尝试引用非结构体数组的字段(我没辙了,实在不知道哪错了)
五、实验结果及分析
此题用贝叶斯判别法分析效果明显
说明:此部分的内容和格式可根据实验课程的具体需要、要求自行设计和确定相关栏目。
3.对第一类与第二类的先验概率分别为7/15、8/15,计算误判概率。
一、实验目的
1.熟练掌握MATLAB软件进行距离判别与贝叶斯判别的方法与步骤。
2.掌握判别分析的回代误判率与交叉误判率的编程。
3.掌握贝叶斯判别的误判率的计算。
二、实验原理
1)在MATLAB中,进行数据的判别分析命令为classify,其调用格式为:
>> N11=0;N22=0;
>> for k=1:n1
A=G1([1:k-1,k+1:n1],:);
N1=length(A(:,1));
M1=mean(A,1);s11=cov(A);
S1=((N1-1)*s11+(n2-1)*s2)/(N1+n2-k);
po1=N1/(n-1);po2=n2/(n-1);
for j=1:2
if w(j)==max(w)
disp(['待判样品属于第',num2str(j),'类污染']);
end
end
end
待判样品属于第2类污染
待判样品属于第2类污染
待判样品属于第2类污染
待判样品属于第2类污染
3、计算回代误判率
>> n11=0;n22=0;
>> for i=1:n1
w1(i,1)=m1*inv(s)*G1(i,:)'-1/2*m1*inv(s)*m1'+log(p1);
w2(i,2)=m2*inv(s)*G2(i,:)'-1/2*m2*inv(s)*m2'+log(p2);
for j=1:2
if w2(i,j)==max(w2(i,:))&j~=2
n22=n22+1;
end
end
end
>> poo=(n11+n22)/(n1+n2)
poo =
0.1000
4、计算交叉误判率
w1(i,2)=m2*inv(s)*G1(i,:)'-1/2*m2*inv(s)*m2'+log(p2);
for j=1:2
if w1(i,j)==max(w1(i,:))&j~=1
n11=n11+1;
end
end
end
>> for i=1:n2
w2(i,1)=m1*inv(s)*G2(i,:)'-1/2*m1*inv(s)*m1'+log(p1);
>> M=(n-k)*log(det(s))-((n1-1)*log(det(s1))+(n2-1)*log(det(s2)));
>> T=(1-d)*M
T =
-44.8237 + 0.9288i
>> C=chi2inv(0.95,f)
C =
32.6706
>> if T<chi2inv(0.95,f)
disp('两组数据协方差相等');
else
disp('两组数据协方差不相等');
end
两组数据协方差相等
2、构造判别函数,得出判别结果
>> for i=1:4
w(1)=m1*inv(s)*x(i,:)'-1/2*m1*inv(s)*m1'+log(p1);
w(2)=m2*inv(s)*x(i,:)'-1/2*m1*inv(s)*m2'+log(p2);
class=classify(sample,training,group’type’)
将sample数据的每一行指定到训练集training的一个类中。Sample和training必须具有相同的列数。group向量包含从1到组数的正整数,它指明训练营集中的每一行属于哪一类。group和training必须具有相同的行数。’type’是可选项,选’linear’表示总体为多元正态总体,选’quadratic’与’mahalanobis’。该函数返回class,它是一个与sample具有相同行数的向量。Class的每一个元素指定sample中对应元素的分类。通过计算sample和training中每一行的马氏距离,classify函数决定sample中的每一行属于哪一个分类。
课程名称
数据分析方法
课程编号
实验地点
系统建模与仿真实验室SL110
实验时间
校外指导教师
无
校内指导教师
实验名称
实验3 距离判别与贝叶斯判别分析
评阅人签字
成绩
实验数据与内容
我国山区某大型化工厂,在厂区及邻近地区挑选有代表性的15个大气取样点,每日4次同时抽取大气样品,测定其中含有的6种气体的浓度,前后共4天,每个取样点每种气体实测16次,计算每个取样点每种气体的平均浓度,数据见表4-8。气体数据对应的污染地区分类见表4-8中最后一列。现有两个取自该地区的4个气体样本,气体指标见表4-8中后4行,试解决以下问题:
for i=1:n1
w1(i,1)=M1*inv(S1)*G1(i,:)'-1/2*M1*inv(S1)*M1'+log(po1);
w1(i,2)=m2*inv(S1)*G1(i,:)'-1/2*m2*inv(S1)*m2'+log(po2);
for j=1:2
if w1(i.j)==max(W1(i,:))&j~=1
0.0740 0.0830 0.1050 0.1900 0.0200 1.0000]
>> G1=A([1:4 7:8 15],:);
>> G2=A([5:6 9:4 15],:);
>> n1=size(G1,1);
>> n2=size(G2,1);
>> n=n1+n2;
>> k=2;
>> p=6;
>> f=p*(p+1)*(k-1)/2;
从总体G1的训练样本开始,剔除其中一个样品,剩余的m-1个样品与G2中的全部样品建立判别函数;
用建立的判别函数对剔除的样品进行判别;
重复以上步骤,直到G1中的全部样本依次被删除又进行判别,其误判的样品个数记为N1*;
对G2的样品重复以上步骤,直到G2中的全部样本依次被删除又进行判别,其误判的样品个数记为N2*。
0.0520 0.0840 0.0210 0.0370 0.0071 0.0220]
>> x=[0.052 0.084 0.021 0.037 0.0071 0.022
0.0410 0.0550 0.1100 0.1100 0.0210 0.0073
0.0300 0.1120 0.0720 0.1600 0.0560 0.0210
于是交叉误判率估计为:
p^*=(N1*+N2*)/(m+n)
5)贝叶斯判别的有效性可以通过平均误判率来确定。判别准则的误判率在一定程度上依赖于所考虑的各总体间的差异程度。各总体间差异越大,就越有可能建立有效的判别准则。如果各总体间差异很小,做判别分析的意义不大。
三、实验步骤ቤተ መጻሕፍቲ ባይዱ
输入数据,判别两类总体的协方差阵是否相等,用马氏距离判断判别污染类别,计算回代误判率与交叉误判率,贝叶斯判别污染分类。
1.判别两类总体的协方差矩阵是否相等,然后用马氏距离差别这4个未知气体样本的污染类别,并计算回代误判率与交叉误判率;若两类总体服从正态分布,第一类与第二类的先验概率分别为7/15、8/15,利用贝叶斯判别样本的污染分类。
2.先验概率为多少时,距离判别与贝时斯判别相同?调整先验概率对判别结果的影响是什么?
2)贝叶斯判别方法步骤
第1步,验证两个总体服从二元正态分布;第2步,检验两个总体的协方差矩阵相等;估计两个总体的先验概率p1、p2;利用MATLAB软件计算。
3)回代误判率
设G1,G2为两个总体,x1,x2…和y1,y2…是分别来自G1,G2的训练样本,以全体训练样本作为m+n个新样品,逐个代入已建立的判别准则中判别其归属,这个过程称为回判。回判结果中若属于G1的样品被误判为属于G2的个数为N1个,属于G2的样品被误判为属于G1的个数为N2个,则误判估计为:
四、实验过程原始记录(数据、图表、计算等)
1、输入矩阵,计算协方差矩阵是否相等
>> A=[0.0560 0.0840 0.0310 0.0380 0.0081 0.0220
0.0400 0.0550 0.1000 0.1100 0.0220 0.0073
……
0.0690 0.0870 0.0270 0.0500 0.0890 0.0210