ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:42.92KB ,
资源ID:4992904      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4992904.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++编程bayes算法.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C++编程bayes算法.docx

1、C+编程bayes算法运行界面:源代码:#include stdafx.h#include Bayes.h#include BayesClass.h#include #ifdef _DEBUG#undef THIS_FILEstatic char THIS_FILE=_FILE_;#define new DEBUG_NEW#endifBayesClass:BayesClass(HWND h) hwnd =h; if(fout = fopen(result.txt, w) = NULL) exit(0);BayesClass:BayesClass() if(fout!= NULL) fclose

2、(fout); int i; for (i=0;imean.size();i+) if (NULL!=mean.at(i) delete mean.at(i); for (i=0;icovariance.size();i+) if (NULL!=covariance.at(i) delete covariance.at(i); for (i=0;iprama.size();i+) if (NULL!=prama.at(i) delete prama.at(i); for (i=0;ifaceprama.size();i+) if (NULL!=faceprama.at(i) delete fa

3、ceprama.at(i); for (i=0;icoefficient.size();i+) if (NULL!=coefficient.at(i) delete coefficient.at(i); for (i=0;icoefficientface.size();i+) if (NULL!=coefficientface.at(i) delete coefficientface.at(i); int BayesClass:LoadSamples(char *fname) FILE *InFile; int i,j; int x; if(InFile = fopen(fname, r) =

4、 NULL) return FAILURE; fscanf(InFile, %d, &num); fscanf(InFile, %d, &dim); fscanf(InFile, %d, &cls); for (i=0; inum; i+) vector temp; for (j=0; jdim; j+) fscanf(InFile,%d,&x); temp.push_back(x); samples.samples.push_back(temp); fscanf(InFile,%d,&x); samples.belong.push_back(x); /write the load resul

5、t to file FPEL(fout); FPS(fout,samples:); FPEL(fout); for (i=0; inum; i+) for (j=0; jdim; j+) FPI(fout,samples.samples.at(i).at(j),NEL); FPI(fout,samples.belong.at(i),NEL); FPEL(fout); return SUCCESS;void BayesClass:EstimateGauss() int i,j,k; int count; double sum; double meandim; /cal the guass mea

6、n for (i=1;i=cls;i+) double *temp=new doubledim; for(j=0;jdim;j+) count=0; sum=0.0; for (k=0;knum;k+) if (samples.belong.at(k)=i) count+; sum+=samples.samples.at(k).at(j); if (count=0) return; tempj=sum/count; preratio.push_back(double)count/num);/cal pre ratio Matrix *m=new Matrix(temp,dim); mean.p

7、ush_back(m); delete temp; /write the means to file FPEL(fout); FPS(fout,means:); FPEL(fout); for (i=0;iToString().c_str(); FPEL(fout); /cal the covariance matrix for (i=1;i=cls;i+) Matrix *m=mean.at(i-1); double *temp=new doubledim*dim; for (int tempi=0;tempidim*dim;tempi+) temptempi=0; for(j=0;jGet

8、Value(0,j); for (k=0;knum;k+) if (samples.belong.at(k)=i) count+; sum+=(samples.samples.at(k).at(j)-meandim)*(samples.samples.at(k).at(j)-meandim); if (count=0) return; / tempj*dim+j=sum/count; tempj*dim+j=sum/(count-1);/wait for change Matrix *c=new Matrix(temp,dim,dim); covariance.push_back(c); de

9、lete temp; /write the covariance to file FPEL(fout); FPS(fout,covariance:); FPEL(fout); for (i=0;iToString().c_str(); FPEL(fout); void BayesClass:CalDistPrama(int contype) this-contype=contype; switch(contype) case CON_EQUL: int i; double temp; / double a,b,c; Matrix total(0.0,dim); for (i=0;iT().T(

10、); FPEL(fout); FPS(fout,Total covariance:); FPEL(fout); FPS(fout,total.ToString().c_str(); FPEL(fout); for (i=0;iVi=(-1.0/2)*(covariance.at(i)-Contra(); dp-Wi=(total.Contra()*(mean.at(i)-T(); temp=(mean.at(i)-T().T()*(total.Contra()*(mean.at(i)-T().GetFirstValue(); / a=(-1.0/2)*log(covariance.at(i)-

11、Arg(); / b=log(preratio.at(i); / dp-w0=(-1.0/2)*temp-a+b; dp-w0=(-1.0/2)*temp-(-1.0/2)*log(total.Arg()+log(preratio.at(i); prama.push_back(dp); FPEL(fout); FPS(fout,DISTPRAMA:); FPEL(fout); for (i=0;iVi.ToString().c_str(); / FPEL(fout); FPS(fout,dp-Wi.ToString().c_str(); FPEL(fout); FPD(fout,dp-w0);

12、 FPEL(fout); break; case CON_NOTEQUL: int i; double temp; / double a,b,c; for (i=0;iVi=(-1.0/2)*(covariance.at(i)-Contra(); dp-Wi=(covariance.at(i)-Contra()*(mean.at(i)-T(); temp=(mean.at(i)-T().T()*(covariance.at(i)-Contra()*(mean.at(i)-T().GetFirstValue(); / a=(-1.0/2)*log(covariance.at(i)-Arg();

13、/ b=log(preratio.at(i); / dp-w0=(-1.0/2)*temp-a+b; dp-w0=(-1.0/2)*temp-(-1.0/2)*log(covariance.at(i)-Arg()+log(preratio.at(i); prama.push_back(dp); FPEL(fout); FPS(fout,DISTPRAMA:); FPEL(fout); for (i=0;iVi.ToString().c_str(); FPEL(fout); FPS(fout,dp-Wi.ToString().c_str(); FPEL(fout); FPD(fout,dp-w0

14、); FPEL(fout); break; void BayesClass:CalDistFace() switch(contype) case CON_EQUL: int i,j; double temp; Matrix total(0.0,dim); for (i=0;iT().T(); for (i=0;icls;i+) for (j=i+1;jT()-mean.at(j)-T(); dfp-w=total.Contra()*tempm; temp=(tempm.T()*total.Contra()*tempm).GetFirstValue(); dfp-x0=(-1.0/2)-log(

15、preratio.at(i)/preratio.at(j)/temp)*tempm; faceprama.push_back(dfp); FPEL(fout); FPS(fout,DISTFACEPRAMA:); FPEL(fout); for (i=0;iw.ToString().c_str(); FPEL(fout); FPS(fout,dfp-x0.ToString().c_str(); FPEL(fout); break; case CON_NOTEQUL:/ / int i;/ double temp;/ for (i=0;iVi=(-1.0/2)*(covariance.at(i)

16、-Contra();/ dp-Wi=(covariance.at(i)-Contra()*(mean.at(i)-T();/ temp=(mean.at(i)-T().T()*(covariance.at(i)-Contra()*(mean.at(i)-T().GetFirstValue();/ / a=(-1.0/2)*log(covariance.at(i)-Arg();/ / b=log(preratio.at(i);/ / dp-w0=(-1.0/2)*temp-a+b;/ dp-w0=(-1.0/2)*temp-(-1.0/2)*log(covariance.at(i)-Arg()+

17、log(preratio.at(i);/ prama.push_back(dp);/ / for (i=0;iVi.ToString().c_str();/ FPEL(fout);/ FPS(fout,dp-Wi.ToString().c_str();/ FPEL(fout);/ FPD(fout,dp-w0);/ FPEL(fout);/ / break; int BayesClass:DoDistOne(int *one,int n) SetOne(one,n); return DistOne();int BayesClass:DoDistOne(vector *test) if (tes

18、t-size()!=dim) return -1; int i; this-one.clear(); for (i=0;ione.push_back(test-at(i); return DistOne();void BayesClass:SetOne(int *one,int n) this-one.clear(); int d=(dimn)?n:dim; int i; for (i=0;ione.push_back(onei); /if n is less than dim, the left are filled with 0 for (i=d;ione.push_back(0); in

19、t BayesClass:DistOne() if (one.size()!=dim) return -1; double *ratio=new doublecls; int i; double *temp=new doubledim; for (i=0;idim;i+) tempi=one.at(i); Matrix m(temp,dim); delete temp;/ double a,b; for (i=0;iVi*m.T().GetFirstValue();/ b=(prama.at(i)-Wi.T()*m.T().GetFirstValue();/ ratioi=a+b+prama.

20、at(i)-w0; switch(contype) case CON_EQUL: ratioi=(prama.at(i)-Wi.T()*m.T().GetFirstValue()+prama.at(i)-w0; break; case CON_NOTEQUL: ratioi=(m*prama.at(i)-Vi*m.T().GetFirstValue()+(prama.at(i)-Wi.T()*m.T().GetFirstValue()+prama.at(i)-w0; break; for (i=0;icls;i+) FPD(fout,ratioi); /get the max double m

21、ax=ratio0; int index=0; for (i=1;icls;i+) if(maxratioi)max=ratioi;index=i; delete ratio; return index+1;void BayesClass:PrepareForDist(int contype) EstimateGauss(); CalDistPrama(contype);/ CalDistFace(); CalCoefficientFace();SAMPLE* BayesClass:GetSamples() return &samples;vector* BayesClass:GetDistP

22、rama() return &prama;void BayesClass:ConvertToEquation() if (dim!=2) return; int i; switch(contype) case CON_EQUL: for(i=0;ione1=prama.at(i)-Wi.GetValue(0,0); co-one2=prama.at(i)-Wi.GetValue(1,0); co-zero=prama.at(i)-w0; coefficient.push_back(co); break; case CON_NOTEQUL: for(i=0;itwo1=prama.at(i)-V

23、i.GetValue(0,0)+prama.at(i)-Vi.GetValue(0,1); co-two2=prama.at(i)-Vi.GetValue(1,0)+prama.at(i)-Vi.GetValue(1,1); co-one1=prama.at(i)-Wi.GetValue(0,0); co-one2=prama.at(i)-Wi.GetValue(1,0); co-zero=prama.at(i)-w0; coefficient.push_back(co); break; void BayesClass:CalCoefficientFace() if (dim!=2) return; int i,j; switch(contype) case CON_EQUL: for(i=0;icls;i+) for (j=i+

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1