模式识别与机器学习作业

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

•设以下模式类别具有正态概率密度函数:

ω1:{(0 0)T, (2 0)T, (2 2)T, (0 2)T}

ω2:{(4 4)T, (6 4)T, (6 6)T, (4 6)T}

(1)设P(ω1)= P(ω2)=1/2,求这两类模式之间的贝叶斯判别界面的方程式。

(2)绘出判别界面。

解:

•编写两类正态分布模式的贝叶斯分类程序。(可选例题或上述作业题为分类模式)

源程序如下:

#include

using namespace std;

void inverse_matrix(intT,double b[5][5])

{

double a[5][5];

for(int i=0;i

for(int j=0;j<(2*T);j++)

{ if (j

a[i][j]=b[i][j];

elseif (j==T+i)

a[i][j]=1.0;

else

a[i][j]=0.0;

}

for(int i=0;i

{

for(int k=0;k

{

if(k!=i)

{

double t=a[k][i]/a[i][i];

for(int j=0;j<(2*T);j++)

{

double x=a[i][j]*t;

a[k][j]=a[k][j]-x;

}

}

}

}

for(int i=0;i

{

double t=a[i][i];

for(int j=0;j<(2*T);j++)

a[i][j]=a[i][j]/t;

}

for(int i=0;i

for(int j=0;j

b[i][j]=a[i][j+T];

}

voidget_matrix(intT,double result[5][5],double a[5]) {

for(int i=0;i

{

for(int j=0;j

{

result[i][j]=a[i]*a[j];

}

}

}

voidmatrix_min(intT,double a[5][5],int bb)

{

for(int i=0;i

{

for(int j=0;j

a[i][j]=a[i][j]/bb;

}

}

voidgetX(intT,double res[5],double a[5],double C[5][5]) {

for(int i=0;i

{

double sum=0.0;

for(int j=0;j

sum+=a[j]*C[j][i];

res[i]=sum;

}

}

int main()

{

int T;

int w1_num,w2_num;

double w1[10][5],w2[10][5],m1[5]={0},m2[5]={0},C1[5][5]={0},C2[5][5]={0};

cin>>T>>w1_num>>w2_num;

for(int i=0;i

{

for(int j=0;j

{

cin>>w1[i][j];

m1[j]+=w1[i][j];

}

}

for(int i=0;i

{

for(int j=0;j

{

cin>>w2[i][j];

m2[j]+=w2[i][j];

}

}

for(int i=0;i

m1[i]=m1[i]/w1_num;

for(int i=0;i

m2[i]=m2[i]/w2_num;

for(int i=0;i

{

double res[5][5],a[5];

for(int j=0;j

a[j]=w1[i][j]-m1[j];

get_matrix(T,res,a);

for(int j=0;j

{

for(int k=0;k

C1[j][k]+=res[j][k];

}

}

matrix_min(T,C1,w1_num);

for(int i=0;i

{

double res[5][5],a[5];

for(int j=0;j

a[j]=w2[i][j]-m2[j];

get_matrix(T,res,a);

for(int j=0;j

{

for(int k=0;k

C2[j][k]+=res[j][k];

}

}

matrix_min(T,C2,w2_num);

inverse_matrix(T,C1);

inverse_matrix(T,C2);

double XX[5]={0},C_C1[5]={0},C_C2[5]={0}; double m1_m2[5];

相关文档
最新文档