作业1-贝叶斯分类器
贝叶斯分类器MATLAB经典程序

function Bayes2%为了提高实验样本测试的精度,故采用多次模拟求平均值的方法N=input('实验模拟次数N(N最好为奇数)=');Result(1:3,1:3)=0; %判别矩阵的初始化for k=1:N %控制程序模拟次数N%生成二维正态分布的样本2 X N 维的矩阵X1=mvnrnd([1 2],[4 0;0 6],300)'; %2 X NX2=mvnrnd([5 3],[5 0;0 1],200)';X3=mvnrnd([4 7],[2 0;0 9],500)'; %样本程序%---------------------------------------------------%%测试样本X10=mvnrnd([1 2],[4 0;0 6],100)'; %2 X NX20=mvnrnd([5 3],[5 0;0 1],100)';X30=mvnrnd([4 7],[2 0;0 9],100)';%先验概率P(1)=length(X1)/(length(X1)+length(X2)+length(X3));P(2)=length(X2)/(length(X1)+length(X2)+length(X3));P(3)=length(X3)/(length(X1)+length(X2)+length(X3));%计算相关量cov(X):协方差矩阵Ave:均值%--------------------------------------------------------%W1=-1/2*inv(cov(X1')); W2=-1/2*inv(cov(X2')); W3=-1/2*inv(cov(X3'));%Ave1=(sum(X1')/length(X1))';Ave2=(sum(X2')/length(X2))';Ave3=(sum(X3')/length(X3))';%计算平均值(2维列向量)w1=inv(cov(X1'))*Ave1;w2=inv(cov(X2'))*Ave2;w3=inv(cov(X3'))* Ave3;%2w10=-1/2*Ave1'*inv(cov(X1'))*Ave1-1/2*log(det(cov(X1')))+log(P(1 ));w20=-1/2*Ave2'*inv(cov(X2'))*Ave2-1/2*log(det(cov(X2')))+log(P(2 ));w30=-1/2*Ave3'*inv(cov(X3'))*Ave3-1/2*log(det(cov(X3')))+log(P(3 ));%-----------------------------------------------------------%for i=1:3for j=1:100if i==1g1=X10(:,j)'*W1*X10(:,j)+w1'*X10(:,j)+w10;g2=X10(:,j)'*W2*X10(:,j)+w2'*X10(:,j)+w20;g3=X10(:,j)'*W3*X10(:,j)+w3'*X10(:,j)+w30;if g1>=g2&g1>=g3Result(1,1)=Result(1,1)+1;elseif g2>=g1&g2>=g3Result(1,2)=Result(1,2)+1;%记录误判情况elseResult(1,3)=Result(1,3)+1;%记录误判情况endelseif i==2g1=X20(:,j)'*W1*X20(:,j)+w1'*X20(:,j)+w10;g2=X20(:,j)'*W2*X20(:,j)+w2'*X20(:,j)+w20;g3=X20(:,j)'*W3*X20(:,j)+w3'*X20(:,j)+w30;if g2>=g1&g2>=g3Result(2,2)=Result(2,2)+1;elseif g1>=g2&g1>=g3Result(2,1)=Result(2,1)+1;elseResult(2,3)=Result(2,3)+1;endelseg1=X30(:,j)'*W1*X30(:,j)+w1'*X30(:,j)+w10;g2=X30(:,j)'*W2*X30(:,j)+w2'*X30(:,j)+w20;g3=X30(:,j)'*W3*X30(:,j)+w3'*X30(:,j)+w30;if g3>=g1&g3>=g2Result(3,3)=Result(3,3)+1;elseif g2>=g1&g2>=g3Result(3,2)=Result(3,2)+1;elseResult(3,1)=Result(3,1)+1;endendendendend%画出各样本的分布情况subplot(2,1,1)plot(X1(1,:),X1(2,:),'r.','LineWidth',2),hold onplot(X2(1,:),X2(2,:),'go','LineWidth',2),hold onplot(X3(1,:),X3(2,:),'b+','LineWidth',2),hold ontitle('训练样本分布情况')legend('训练样本1','训练样本2','训练样本3') subplot(2,1,2)plot(X10(1,:),X10(2,:),'r.','LineWidth',2),hold onplot(X20(1,:),X20(2,:),'go','LineWidth',2),hold onplot(X30(1,:),X30(2,:),'b+','LineWidth',2),hold ontitle('测试样本分布情况')legend('测试样本1','测试样本2','测试样本3')%由于多次循环后存在小数,根据实际情况判别矩阵须取整%如果N为偶数,可能出现小数为0.5的情况,此时将无法更加准确判断矩阵Result=Result/N %判别矩阵,反映Bayes的判别效果for i=1:length(Result)if round(sum(Result(i,:)-fix(Result(i,:))))==1[m,n]=find(max(Result(i,:)-fix(Result(i,:)))==(Result(i,:)-fix(Result( i,:))));n=min(n);%存在小数点相同的情况随即选取一个for j=1:length(Result)if j==nResult(i,j)=fix(Result(i,j))+1;elseResult(i,j)=fix(Result(i,j));endendelseif round(sum(Result(i,:)-fix(Result(i,:))))==2[m,n1]=find(max(Result(i,:)-fix(Result(i,:)))==(Result(i,:)-fix(Resul t(i,:))));[m,n2]=find(min(Result(i,:)-fix(Result(i,:)))==(Result(i,:)-fix(Result (i,:))));n1=min(n1);n2=min(n2);%如果有存在小数点相同的情况,随即选取一个for j=1:length(Result)if j==n1Result(i,j)=fix(Result(i,j))+1;elseif j==n2Result(i,j)=fix(Result(i,j));elseResult(i,j)=fix(Result(i,j))+1;endendelsecontinue,endend总结的来说,我们都知道,只要有意义,那么就必须慎重考虑。
模式识别第一次作业报告

模式识别第一次作业报告姓名:刘昌元学号:099064370 班级:自动化092班题目:用身高和/或体重数据进行性别分类的实验基本要求:用famale.txt和male.txt的数据作为训练样本集,建立Bayes分类器,用测试样本数据test1.txt和test2.txt该分类器进行测试。
调整特征、分类器等方面的一些因素,考察它们对分类器性能的影响,从而加深对所学内容的理解和感性认识。
一、实验思路1:利用Matlab7.1导入训练样本数据,然后将样本数据的身高和体重数据赋值给临时矩阵,构成m行2列的临时数据矩阵给后面调用。
2:查阅二维正态分布的概率密度的公式及需要的参数及各个参数的意义,新建m函数文件,编程计算二维正态分布的相关参数:期望、方差、标准差、协方差和相关系数。
3.利用二维正态分布的相关参数和训练样本构成的临时数据矩阵编程获得类条件概率密度,先验概率。
4.编程得到后验概率,并利用后验概率判断归为哪一类。
5.利用分类器训练样本并修正参数,最后可以用循环程序调用数据文件,统计分类的男女人数,再与正确的人数比较得到错误率。
6.自己给出决策表获得最小风险决策分类器。
7.问题的关键就在于利用样本数据获得二维正态分布的相关参数。
8.二维正态分布的概率密度公式如下:试验中编程计算出期望,方差,标准差和相关系数。
其中:二、实验程序设计流程图:1:二维正态分布的参数计算%功能:调用导入的男生和女生的身高和体重的数据文件得到二维正态分布的期望,方差,标准差,相关系数等参数%%使用方法:在Matlab的命令窗口输入cansu(male) 或者cansu(famale) 其中 male 和 famale%是导入的男生和女生的数据文件名,运用结果返回的是一个行1行7列的矩阵,其中参数的顺序依次为如下:%%身高期望、身高方差、身高标准差、体重期望、体重方差、体重标准差、身高和体重的相关系数%%开发者:安徽工业大学电气信息学院自动化 092班刘昌元学号:099064370 %function result=cansu(file)[m,n]=size(file); %求出导入的数据的行数和列数即 m 行n 列%for i=1:1:m %把身高和体重构成 m 行 2 列的矩阵%people(i,1)=file(i,1);people(i,2)=file(i,2);endu=sum(people)/m; %求得身高和体重的数学期望即平均值%for i=1:1:mpeople2(i,1)=people(i,1)^2;people2(i,2)=people(i,2)^2;endu2=sum(people2)/m; %求得身高和体重的方差、%x=u2(1,1)-u(1,1)^2;y=u2(1,2)-u(1,2)^2;for i=1:1:mtem(i,1)=people(i,1)*people(i,2);ends=0;for i=1:1:ms=s+tem(i,1);endcov=s/m-u(1,1)*u(1,2); %求得身高和体重的协方差 cov (x,y)%x1=sqrt(x); %求身高标准差 x1 %y1=sqrt(y); %求身高标准差 y1 %ralation=cov/(x1*y1); %求得身高和体重的相关系数 ralation %result(1,1)=u(1,1); %返回结果 :身高的期望 %result(1,2)=x; %返回结果 : 身高的方差 %result(1,3)=x1; %返回结果 : 身高的标准差 %result(1,4)=u(1,2); %返回结果 :体重的期望 %result(1,5)=y; %返回结果 : 体重的方差 %result(1,6)=y1; %返回结果 : 体重的标准差 %result(1,7)=ralation; %返回结果:相关系数 %2:贝叶斯分类器%功能:身高和体重相关情况下的贝叶斯分类器(最小错误率贝叶斯决策)输入身高和体重数据,输出男女的判断%%使用方法:在Matlab命令窗口输入 bayes(a,b) 其中a为身高数据,b为体重数据。
贝叶斯分类

详解贝叶斯分类器1.贝叶斯决策论贝叶斯分类器是一类分类算法的总称,贝叶斯定理是这类算法的核心,因此统称为贝叶斯分类。
贝叶斯决策论通过相关概率已知的情况下利用误判损失来选择最优的类别分类。
“风险”(误判损失)= 原本为cj的样本误分类成ci产生的期望损失,期望损失可通过下式计算:为了最小化总体风险,只需在每个样本上选择能够使条件风险R(c|x)最小的类别标记。
最小化分类错误率的贝叶斯最优分类器为:即对每个样本x,选择能使后验概率P(c|x)最大的类别标记。
利用贝叶斯判定准则来最小化决策风险,首先要获得后验概率P(c|x),机器学习要实现的是基于有限的训练样本集尽可能准确的估计出后验概率P(c|x)。
主要有两种模型:一是“判别式模型”:通过直接建模P(c|x)来预测,其中决策树,BP神经网络,支持向量机都属于判别式模型。
另外一种是“生成式模型”:通过对联合概率模型P(x,c)进行建模,然后再获得P(c|x)。
对于生成模型来说:基于贝叶斯定理,可写为下式(1)通俗的理解:P(c)是类“先验”概率,P(x|c)是样本x相对于类标记c的类条件概率,或称似然。
p(x)是用于归一化的“证据”因子,对于给定样本x,证据因子p(x)与类标记无关。
于是,估计p(c|x)的问题变为基于训练数据来估计p(c)和p(x|c),对于条件概率p(x|c)来说,它涉及x所有属性的联合概率。
2.极大似然估计假设p(x|c))具有确定的形式并且被参数向量唯一确定,则我们的任务是利用训练集估计参数θc,将P(x|c)记为P(x|θc)。
令Dc表示训练集D第c类样本的集合,假设样本独立同分布,则参数θc对于数据集Dc的似然是对进行极大似然估计,就是去寻找能最大化P(Dc|θc)的参数值。
直观上看,极大似然估计是试图在θc所有可能的取值中,找到一个能使数据出现的“可能性”最大的值。
上式的连乘操作易造成下溢,通常使用对数似然:此时参数θc的极大似然估计为在连续属性情形下,假设概率密度函数,则参数和的极大似然估计为:也就是说,通过极大似然法得到的正态分布均值就是样本均值,方差就是的均值,在离散情况下,也可通过类似的方式估计类条件概率。
贝叶斯分类器

贝叶斯分类器 本⽂主要介绍⼀个常见的分类框架--贝叶斯分类器。
这篇⽂章分为三个部分:1. 贝叶斯决策论;2. 朴素贝叶斯分类器; 3. 半朴素贝叶斯分类器 贝叶斯决策论 在介绍贝叶斯决策论之前,先介绍两个概念:先验概率(prior probability)和后验概率(posterior probability)。
直观上来讲,先验概率是指在事件未发⽣时,估计该事件发⽣的概率。
⽐如投掷⼀枚匀质硬币,“字”朝上的概率。
后验概率是指基于某个发⽣的条件事件,估计某个事件的概率,它是⼀个条件概率。
⽐如⼀个盒⼦⾥⾯有5个球,两个红球,三个⽩球,求在取出⼀个红球后,再取出⽩球的概率。
在wiki上,先验概率的定义为:A prior probability is a marginal probability, interpreted as a description of what is known about a variable in the absence of some evidence。
后验概率的定义为:The posterior probability is the conditional probability of the variable taking the evidence into account. The probability is computed from the prior and the likelihood function via Baye's theorem. 现在以分类任务为例。
⾸先假设有N种可能的类别标签,即y={c1, c2, ..., cN}, λij 表⽰将⼀个真实标记为cj的样本误分类为ci时产⽣的损失。
后验概率p(ci|x)表⽰将样本x分类给ci是的概率。
那么将样本x分类成ci产⽣的条件风险(conditional risk)为: 其中,P(cj|x) 表⽰样本x分类成cj类的概率,λij 表⽰将真实cj类误分类为ci类的损失。
二分类朴素贝叶斯例题

二分类朴素贝叶斯例题《二分类朴素贝叶斯例题》在机器学习领域中,分类是一个重要的任务,它可以将数据集划分为不同的类别。
朴素贝叶斯分类器是一种基于概率的分类方法,它采用了贝叶斯定理,并假设特征之间是相互独立的。
本文将介绍一个关于二分类朴素贝叶斯的例题。
假设我们有一个邮件分类的数据集,它包含了许多已被标记为垃圾邮件和非垃圾邮件的样本。
每个样本都有多个特征,比如邮件的主题、发送者、内容等。
我们的目标是根据这些特征来对新的邮件进行分类。
首先,我们需要准备数据集并进行预处理。
预处理包括去除噪声、标准化数据等步骤。
在这个例题中,我们假设已经完成了预处理,并得到了一个包含特征和标签的训练集。
特征被表示为一个向量,而标签则用0表示非垃圾邮件,用1表示垃圾邮件。
接下来,我们可以使用朴素贝叶斯分类器对训练集进行训练。
朴素贝叶斯分类器的基本思想是通过计算给定特征的概率来预测新样本的类别。
这里的朴素贝叶斯假设指的是假设每个特征的出现概率是相互独立的。
训练步骤涉及计算每个类别的先验概率和每个特征在给定类别下的条件概率。
先验概率表示的是某个样本属于某个类别的概率,而条件概率则表示的是在已知类别的情况下,某个特征出现的概率。
这些概率可以通过统计训练集中的样本来进行估计。
在训练完成后,我们可以使用分类器对新的样本进行预测。
预测步骤包括计算新样本属于每个类别的概率,并选择具有最高概率的类别作为预测结果。
在实际应用中,我们可以使用不同的评价指标来评估分类器的性能,比如准确率、精确率、召回率等。
此外,可以通过调整分类器的参数或选择其他特征来改进分类器的性能。
通过这个例题,我们可以了解到朴素贝叶斯分类器的基本原理和应用方法。
它是一种简单而有效的分类算法,在文本分类、垃圾邮件过滤等领域中有广泛应用。
通过适当地调整参数和特征选择,我们可以提高分类器的性能,并对新的样本进行准确的分类预测。
模式识别大作业

模式识别大作业(总21页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--作业1 用身高和/或体重数据进行性别分类(一)基本要求:用和的数据作为训练样本集,建立Bayes分类器,用测试样本数据对该分类器进行测试。
调整特征、分类器等方面的一些因素,考察它们对分类器性能的影响,从而加深对所学内容的理解和感性认识。
具体做法:1.应用单个特征进行实验:以(a)身高或者(b)体重数据作为特征,在正态分布假设下利用最大似然法或者贝叶斯估计法估计分布密度参数,建立最小错误率Bayes分类器,写出得到的决策规则,将该分类器应用到测试样本,考察测试错误情况。
在分类器设计时可以考察采用不同先验概率(如对, 对, 对等)进行实验,考察对决策规则和错误率的影响。
图1-先验概率:分布曲线图2-先验概率:分布曲线图3--先验概率:分布曲线图4不同先验概率的曲线有图可以看出先验概率对决策规则和错误率有很大的影响。
程序:和2.应用两个特征进行实验:同时采用身高和体重数据作为特征,分别假设二者相关或不相关(在正态分布下一定独立),在正态分布假设下估计概率密度,建立最小错误率Bayes分类器,写出得到的决策规则,将该分类器应用到训练/测试样本,考察训练/测试错误情况。
比较相关假设和不相关假设下结果的差异。
在分类器设计时可以考察采用不同先验概率(如 vs. , vs. , vs. 等)进行实验,考察对决策和错误率的影响。
训练样本female来测试图1先验概率 vs. 图2先验概率 vs.图3先验概率 vs. 图4不同先验概率对测试样本1进行试验得图对测试样本2进行试验有图可以看出先验概率对决策规则和错误率有很大的影响。
程序和3.自行给出一个决策表,采用最小风险的Bayes决策重复上面的某个或全部实验。
W1W2W10W20close all;clear all;X=120::200; %设置采样范围及精度pw1=;pw2=; %设置先验概率sample1=textread('') %读入样本samplew1=zeros(1,length(sample1(:,1)));u1=mean(sample1(:,1));m1=std(sample1(:,1));y1=normpdf(X,u1,m1); %类条件概率分布figure(1);subplot(2,1,1);plot(X,y1);title('F身高类条件概率分布曲线');sample2=textread('') %读入样本samplew2=zeros(1,length(sample2(:,1)));u2=mean(sample2(:,1));m2=std(sample2(:,1));y2=normpdf(X,u2,m2); %类条件概率分布subplot(2,1,2);plot(X,y2);title('M身高类条件概率分布曲线');P1=pw1*y1./(pw1*y1+pw2*y2);P2=pw2*y2./(pw1*y1+pw2*y2);figure(2);subplot(2,1,1);plot(X,P1);title('F身高后验概率分布曲线');subplot(2,1,2);plot(X,P2);title('M身高后验概率分布曲线');P11=pw1*y1;P22=pw2*y2;figure(3);subplot(3,1,1);plot(X,P11);subplot(3,1,2);plot(X,P22);subplot(3,1,3);plot(X,P11,X,P22);sample=textread('all ') %读入样本[result]=bayes(sample1(:,1),sample2(:,1),pw1,pw2);%bayes分类器function [result] =bayes(sample1(:,1),sample2(:,1),pw1,pw2); error1=0;error2=0;u1=mean(sample1(:,1));m1=std(sample1(:,1));y1=normpdf(X,u1,m1); %类条件概率分布u2=mean(sample2(:,1));m2=std(sample2(:,1));y2=normpdf(X,u2,m2); %类条件概率分布P1=pw1*y1./(pw1*y1+pw2*y2);P2=pw2*y2./(pw1*y1+pw2*y2);for i = 1:50if P1(i)>P2(i)result(i)=0;pe(i)=P2(i);elseresult(i)=1;pe(i)=P1(i);endendfor i=1:50if result(k)==0error1=error1+1;else result(k)=1error2=error2+1;endendratio = error1+error2/length(sample); %识别率,百分比形式sprintf('正确识别率为%.2f%%.',ratio)作业2 用身高/体重数据进行性别分类(二)基本要求:试验直接设计线性分类器的方法,与基于概率密度估计的贝叶斯分离器进行比较。
贝叶斯分类器(3)朴素贝叶斯分类器

贝叶斯分类器(3)朴素贝叶斯分类器根据,我们对贝叶斯分类器所要解决的问题、问题的求解⽅法做了概述,将贝叶斯分类问题转化成了求解P(x|c)的问题,在上⼀篇中,我们分析了第⼀个求解⽅法:极⼤似然估计。
在本篇中,我们来介绍⼀个更加简单的P(x|c)求解⽅法,并在此基础上讲讲常⽤的⼀个贝叶斯分类器的实现:朴素贝叶斯分类器(Naive Bayes classifier)。
1 朴素贝叶斯分类原理1.1 分类问题回顾我们的⽬标是通过对样本的学习来得到⼀个分类器,以此来对未知数据进⾏分类,即求后验概率P(c|x)。
在中,我们描述了贝叶斯分类器是以⽣成式模型的思路来处理这个问题的,如下⾯的公式所⽰,贝叶斯分类器通过求得联合概率P(x,c)来计算P(c|x),并将联合概率P(x,c)转化成了计算类先验概率P(c)、类条件概率P(x|c)、证据因⼦P(x)。
h∗(x)=\argmax c∈Y P(c|x)=\argmax c∈Y P(x,c)P(x)=\argmaxc∈YP(c)∗P(x|c)P(x)其中的难点是类条件概率P(x|c)的计算,因为样本x本⾝就是其所有属性的联合概率,各种属性随意组合,变幻莫测,要计算其中某⼀种组合出现的概率真的是太难了,⽽朴素贝叶斯的出现就是为了解决这个问题的。
要想计算联合概率P(a,b),我们肯定是希望事件a与事件b是相互独⽴的,可以简单粗暴的P(a,b)=P(a)P(b),多想对着流星许下⼼愿:让世界上复杂的联合概率都变成简单的连乘!1.2 朴素贝叶斯朴素贝叶斯实现了我们的梦想!朴素贝叶斯中的朴素就是对多属性的联合分布做了⼀个⼤胆的假设,即x的n个维度之间相互独⽴:P([x1,x2,...,x n]|c)=P(x1|c)P(x2|c)...P(x1|c)朴素贝叶斯通过这⼀假设⼤⼤简化了P(x|c)的计算,当然,使⽤这个假设是有代价的,⼀般情况下,⼤量样本的特征之间独⽴这个条件是弱成⽴的,毕竟哲学上说联系是普遍的,所以我们使⽤朴素贝叶斯会降低⼀些准确性;如果实际问题中的事件的各个属性⾮常不独⽴的话,甚⾄是⽆法使⽤朴素贝叶斯的。
贝叶斯分类器例题

贝叶斯分类器例题
1.朴素贝叶斯分类器:一个例子是识别垃圾邮件。
给定一封邮件,可以根据邮件中的关键词和主题来判断该邮件是否为垃圾邮件。
通过朴素贝叶斯分类器,可以将邮件分为垃圾邮件和非垃圾邮件两类。
2.贝叶斯网络分类器:另一个例子是疾病诊断。
给定一个病人的症状和病史,可以根据贝叶斯网络分类器来预测该病人可能患有哪种疾病。
通过计算每个疾病的概率,可以得出最可能的诊断结果。
3.信用卡欺诈识别:在这个例子中,我们使用贝叶斯分类器来识别信用卡欺诈行为。
给定一系列交易数据,包括交易金额、交易地点、交易时间等,我们需要判断这些交易是否为欺诈行为。
通过训练一个贝叶斯分类器,可以学习到正常交易和欺诈交易的特征,并利用这些特征来预测新的交易是否为欺诈行为。
4.情感分析:在这个例子中,我们使用贝叶斯分类器来进行情感分析。
给定一篇文章或一段评论,我们需要判断该文本的情感倾向是积极还是消极。
通过训练一个贝叶斯分类器,可以学习到积极和消极文本的特征,并利用这些特征来预测新的文本的情感倾向。
5.基因分类:在这个例子中,我们使用贝叶斯分类器来进行基因分类。
给定一个基因序列,我们需要将其分类为不同的基因家族或亚家族。
通过训练一个贝叶斯分类器,可以学习到不同基因家族或亚家族的特征,并利用这些特征来预测新的基因序列的家族或亚家族归属。
以上这些例题只是贝叶斯分类器的一些应用示例,实际上贝叶斯分类器的应用非常广泛,它可以应用于任何需要分类的领域,如金融、医疗、社交媒体等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
作业1、BAYES分类器
算法1.
%绘图,从多个视角观察上述3维2类训练样本
clear all;
close all;
N1=440;
x1(1,:)=-1.7+0.9*randn(1,N1); % 1 类440 个训练样本,3 维正态分布
x1(2,:)= 1.6+0.7*randn(1,N1);
x1(3,:)=-1.5+0.8*randn(1,N1);
N2=400;
x2(1,:)= 1.3+1.2*randn(1,N2); % 2 类400 个训练样本,3 维正态分布
x2(2,:)=-1.5+1.3*randn(1,N2);
x2(3,:)= 1.4+1.1*randn(1,N2);
plot3(x1(1,:),x1(2,:),x1(3,:),'*',x2(1,:),x2(2,:),x2(3,:),'o');
grid on;
axis equal;
axis([-5 5 -5 5 -5 5]);
xlabel('x ');ylabel('y ');zlabel('z ');
%假定2类的类条件概率分布皆为正态分布,分别估计2类的先验概率、均值向量、协方差矩阵
p1=N1/(N1+N2); % 1 类的先验概率
p2=N2/(N1+N2); % 2 类的先验概率
u1=sum(x1')/N1; % 1 类均值估计
u1=u1'
for i=1:N1 xu1(:,i)=x1(:,i)-u1;end;
e1=(xu1*xu1')/(N1-1) % 1 类协方差矩阵估计
u2=sum(x2')/N2; % 2 类均值估计
u2=u2'
for i=1:N2 xu2(:,i)=x2(:,i)-u2;end;
e2=(xu2*xu2')/(N2-1) % 2 类协方差矩阵估计
%求解2类的BAYES分类器的决策(曲)面,并绘图、从多个视角观察决策面
%bayse 概率概率分布函数
w10=-(1/2)*u1'*(inv(e1))*u1-0.5*log(det(e1))+log(0.52);
w20=-(1/2)*u2'*(inv(e2))*u2-0.5*log(det(e2))+log(0.48);
W1=-(0.5)*inv(e1);
W2=-(0.5)*inv(e2);
w1=inv(e1)*u1;
w2=inv(e2)*u2;
temp=-5:0.1:5;
[x1,y1,z1]=meshgrid(temp,temp,temp);
val=zeros(size(x1));
for k=1:(size(x1,1)^3)
X=[x1(k),y1(k),z1(k)]';
val(k)=X'*W1*X+w1'*X+w10-X'*W2*X-w2'*X-w20;
end
bv=isosurface(x1,y1,z1,val,0);
patch(bv,'facecolor','none','EdgeColor','y');
算法2.
clear all;
close all;
N1=440;
x1(1,:)=-1.7+0.9*randn(1,N1);
x1(2,:)= 1.6+0.7*randn(1,N1); % 1 类440 个训练样本,3 维正态分布
x1(3,:)=-1.5+0.8*randn(1,N1);
N2=400;
x2(1,:)= 1.3+1.2*randn(1,N2); % 2 类400 个训练样本,3 维正态分布
x2(2,:)=-1.5+1.3*randn(1,N2);
x2(3,:)= 1.4+1.1*randn(1,N2);
plot3(x1(1,:),x1(2,:),x1(3,:),'*',x2(1,:),x2(2,:),x2(3,:),'o');
grid on;
axis equal;
axis([-5 5 -5 5 -5 5]);
u1=sum(x1')/N1 ; % 1 类均值估计
u1=u1'
for i=1:N1 xu1(:,i)=x1(:,i)-u1;end;
e1=(xu1*xu1')/(N1-1) % 1 类协方差矩阵估计
e10=det(e1) ; %协方差行列式
e11=inv(e1) %协方差逆阵
u2=sum(x2')/N2; % 2 类均值估计
u2=u2';
for i=1:N2 xu2(:,i)=x2(:,i)-u2;end;
e2=(xu2*xu2')/(N2-1); % 2 类协方差矩阵估计
e20=det(e2); %协方差行列式
e21=inv(e2) ; %协方差逆阵
px1=N1/(N1+N2) %先验概率x1
px2=N2/(N1+N2) %先验概率x2
%bayse 概率概率分布函数
syms x y z real;
h1=-0.5.*([x y z]-u1')*e11*[[x y z]-u1']'-0.5*log(e10)+log(px1)-0.5*3*log(2*pi); h2=-0.5.*([x y z]-u2')*e21*[[x y z]-u2']'-0.5*log(e20)+log(px2)-0.5*3*log(2*pi);
f=h1-h2; %决策函数
[x,y,z]=meshgrid(-5:.5:5);
f=subs(simplify(vpa(f)))
p=patch(isosurface(x,y,z,f,0));
set(p,'FaceColor','black');
grid on;
view(3) %决策面
xlabel('X');
ylabel('Y') ;zlabel('Z');title('bayes 分类器');。