Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2011-04-07, 11:11   #1
xiaoqin0622
初级会员
 
注册日期: 2011-04-07
帖子: 1
声望力: 0
xiaoqin0622 正向着好的方向发展
默认 关于Bayes 分类器

刚接触matlab,对于其中的一些基本情况有点不太了解,想请教一下一个下面的问题,加红色的字 那里,请教一下定义的问题,那里定义的的是符号,最后显示的也只是一个符号,如果我随后输出的是一个G(x)=g1(x)-g2(x)是两个式子的之差,那该如何定义为好,而这个X=【x1;x2】向量我是要在两一个参数M文件中输入的,清各位朋友指导一下,谢谢。 中间的一些都是算法,不需要看
function bayes_classifier(feature1,feature2,p1,p2);
%-----------------------------------------------------
% bayes_classifier(class1,class2,p1,p2); 两类,两特征
% % INPUT variables:
% - feature1 - feature vector of the size (m,2) ,m是第一类的样本数
% - feature2 - feature vector of the size (n,2) ,n是第二类的样本数
% - p1 - 先验概率1
% - p2 - 先验概率2
% 判别式
% g1(x) = A1*x1^2 + B1*x1*x2 + C1*x2^2 + D1*x1 + E1*x2 + F1
% g2(x) = A2*x1^2 + B2*x1*x2 + C2*x2^2 + D2*x1 + E2*x2 + F2

syms x1
syms x2

cov1=cov(feature1);
cov2=cov(feature2);
mu1=mean(feature1);
mu2=mean(feature2);

detcov1=det(cov1);
detcov2=det(cov2);
invcov1=inv(cov1);
invcov2=inv(cov2);

W1=-0.5*invcov1;
w1=invcov1*mu1';

W2=-0.5*invcov2;
w2=invcov2*mu2';


omega1=-0.5*(mu1)*invcov1*mu1'-0.5*log(detcov1)+log(p1);
omega2=-0.5*(mu2)*invcov2*mu2'-0.5*log(detcov2)+log(p2);

omega=omega1-omega2;

X=[sym(x1); sym(x2)]; 这里定义的是符号
X_t=[sym(x1) sym(x2)];

digits(2);
a=X_t*(sym(W1,'d')*X);
a=simplify(a);

b=(sym(w1','d')*X); %注意这个w1有一个转置。

c=X_t*(sym(W2,'d')*X);
c=simplify(c);

d=sym(w2','d')*X;

eq1=a+b+sym(omega1,'d'); %eq1 就是g1(x)
eq2=c+d+sym(omega2,'d'); %eq2 就是g2(x)


disp(['Discriminant function for the first class:']);
disp(eq1);
disp(['Discriminant function for the second class:']);
disp(eq2);
xiaoqin0622 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 16:05


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.