| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 实验三 最小错误率的贝叶斯分类 -> 正文阅读 |
|
[人工智能]实验三 最小错误率的贝叶斯分类 |
一、实验目的本次实验的主要内容是编程实现一个可以对两类模式样本进行分类的贝叶斯分类器,其中假设两个模式类的条件概率分布均为高斯分布。本次实验自定义一个函数self_mvnrnd(varargin) ,输入8个参数,其中,参数1,2,3,4分别为一类模式样本的均值矢量,协方差矩阵,样本数,先验概率,参数5,6,7,8分别为另一类模式样本的均值矢量,协方差矩阵,样本数,先验概率。最后,调用self_mvnrnd()函数可以用最小错误率贝叶斯分类器对其进行分类,统计正确分类的百分比,并在二维图上用不同的颜色画出正确分类和错分的样本。 二、实验内容 利用贝叶斯后验概率确定分类: ? 设有19人进行体检,结果如下表。但事后发现4人忘了写性别,试问,这4人是男是女?
C=2。男—1类,女—2类。 三、实验过程Matlab代码如下: M=50;% M为最大的类数 % 已知类别样本15个 (身高,体重,类别)。1-男,2-女 n=15; pattern=[170,68,1; 130,66,2; 180,71,1; 190,73,1; 160,70,2; 150,66,1; 190,68,1; 210,76,1; 100,58,2; 170,75,1; 140,62,1; ????????150,64,2; ????????120,66,2; ????????150,66,1; 130,65,1]; ?????% 未知类别样本4个 X= ???[140,70,0; ???150,60,0; ???145,65,0; ???160,75,0]; K=4; ?% 未知类别样本个数 pattern ??% 显示pattern X ????????% 显示未知类别的样本 C=2; % 类别总数C=2 num=zeros(1,C); %数组 num(i)存放第i类的样本数(i=1...C for i=1:n % 统计每类样本数 num(pattern(i,3))=num(pattern(i,3))+1; end for i=1:C % 输出每类样本数 fprintf('%d 类样本数= %d \n',i,num(i)) end % 计算每类的先验概率 for i=1:C ??P(i)=num(i)/n; ??% 输出每类的先验概率 ??fprintf('%d 类的先验概率=%.2f \n',i,P(i)) end % float PW1[M],PW2[M]; ?存放后验概率数组 % float height,weight; ?身高-体重 % 对未知类别的样本进行分类判断 for ?k=1:K % 对未知类别样本数据:身高-体重加以处理 ???fprintf('第%d 个样本:%d,%d\n',k,X(k,1),X(k,2)) ???height=X(k,1); ???weight=X(k,2); ???num1=0; ???for i=1:n ?????if (pattern(i,1)==height&pattern(i,3)==1) num1=num1+1; ?????end ???end ???if (num1==0) ?% 防止 0 概率,分子分母均作处理:分子加1,分母加类别数或不同取值个数 ????PW1(1)=1/(num(1)+2); ????else ????????PW1(1)=(num1+1)/(num(1)+2); ???end ???num1=0; ???for i=1:n ?????if (pattern(i,2)==weight&pattern(i,3)==1) num1=num1+1; ?????end ???end ???if (num1==0) ?% 防止 0 概率,分子分母均作处理:分子加1,分母加类别数或不同取值个数 ????PW1(2)=1/(num(1)+2); ????else ????????PW1(2)=(num1+1)/(num(1)+2); ???end ???num2=0; ???for i=1:n ???if (pattern(i,1)==height&pattern(i,3)==2) ?num2=num2+1; ???????end ???end ???if (num2==0) ??PW2(1)=1/(num(2)+2); ?else ??????PW2(1)=(num2+1)/(num(2)+2); ???end ???num2=0; ???for i=1:n ???if (pattern(i,2)==weight&pattern(i,3)==2) ?num2=num2+1; ???????end ???end ???if (num2==0) ??PW2(2)=1/(num(2)+2); ?else ??????PW2(2)=(num2+1)/(num(2)+2); ???end ???PWT1=PW1(1)*PW1(2)*P(1); % 计算属于第一类的似然概率*先验概率 ???PWT2=PW2(1)*PW2(2)*P(2); % 计算属于第二类的似然概率*先验概率 ???fprintf(' ??属于第一类的似然概率*先验概率(后验概率*P(X))= %.2f \n',PWT1) ???fprintf(' ??属于第二类的似然概率*先验概率(后验概率*P(X))= %.2f \n',PWT2) ???if (PWT1>PWT2) ???fprintf(' ??%d -th pattern belongs to 1\n',k) elseif (PWT1<PWT2) ???????fprintf(' ??%d -th pattern belongs to 2\n',k) ?else ???fprintf(' ??%d -th pattern belongs to 1 or 2 is equal\n',k) ?????end ?end 四、实验结果 ? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 4:23:12- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |