基于贝叶斯判决的手写数字识别系统,带GUI界面

简介: 基于贝叶斯判决的手写数字识别系统,带GUI界面

1.算法描述

  贝叶斯判别规则是把某特征矢量(x) 落入某类集群的条件概率当成分类判别函数(概率判别函数),x落入某集群的条件概率最大的类为X的类别,这种判决规则就是贝叶斯判别规则。贝叶斯判别规则是以错分概率或风险最小为准则的判别规则。

  判别函数,各个类别的判别区域确定后,可以用一些函数来表示和鉴别某个特征矢量属于哪个类别,这些函数就称为判别函数。这些函数不是集群在特征空间形状的数学描述,而是描述某一位置矢量属于某个类别的情况,如属于某个类别的条件概率,一般不同的类别都有各自不同的判别函数。

  贝叶斯分类,是机器学习中比较重要并被广泛使用的一个分类算法,它分类思想主要基于贝叶斯定理。用一句话来描述就是,如果一个事件A发生时,总是伴随事件B,那么事件B发生时,事件A发生的概率也会很大。

  贝叶斯分类一个很常见的用途是用在识别垃圾邮件上。我们给定一个学习集,程序通过学习集发现,在垃圾邮件中经常出现“免费赚钱”这个词,同时“免费赚钱”这个词又在垃圾邮件中更容易出现。那么在实际判断中,我们发现邮件中出现“免费赚钱”,就可以判定邮件是垃圾邮件。

  其实我们每个人,我们的大脑每天都会执行分类操作,而且思考的过程和贝叶斯分类很像。我们可以想象一下,我们自己是如何识别垃圾邮件的。我们识别垃圾邮件总会有一定的规则,比如邮件中含有XX关键词,邮件描述信息太离谱了,邮件的发送人不认识,邮件中包含钓鱼网站。而这些规则,我们都是通过以往的经验总结出来的。通过这些规则,我们就可以判定邮件是垃圾邮件的概率更大,还是非垃圾邮件的概率更大。

   首先我们要知道,P(A),P(B)分别是事件A,B发生的概率,而P(A|B)是在事件A在事件B发生的前提下发生的概率,P(AB)是事件A,B同时发生的概率。那么我们的有公式:

6850eda001c78598c8b55faa90189446_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

那么贝叶斯定理是:

0bbecdd3e9a3811a1ca10d0f25bd2057_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

   注:P(AB)=P(A)P(B)的充分必要条件是事件A和事件B相互独立。用通俗的语言讲就是,事件A是否发生不会影响到事件B发生的概率。

2.仿真效果预览
matlab2022a仿真结果如下:

777756713f07da231b0a7ca72f2b113c_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
d9e385081c27fff2b4bbc7b9eacbdafd_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
a7b061f6e4358b5af82a88f1f61b3de3_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

3.MATLAB核心程序

clc;
load template pattern;
 
%将数字特征转化为0、1两个数值表示
for i=1:10
    for j=1:25
        for k=1:pattern(1,i).num
            if pattern(1,i).feature(j,k)>0.1
               pattern(1,i).feature(j,k)=1;
            else
                pattern(1,i).feature(j,k)=0;
            end
        end
    end
end
 
[pc_template,pc_data]=pcapro(data); %主成分分析 
temp=0;
for i=1:10
    pattern(1,i).feature=pc_template(:,temp+1:temp+pattern(1,i).num);
    temp=temp+pattern(1,i).num;
end
 
 
%求协方差矩阵、协方差矩阵的逆矩阵、协方差矩阵的行列式
s_cov=[];
s_inv=[];
s_det=[];
 
for i=1:10
    s_cov(i).data=cov(pattern(1,i).feature');
    s_inv(i).data=inv(s_cov(i).data);
    s_det(i)=det(s_cov(i).data);
end
%求先验概率
sum=0;
pw=[];   %P(wi)---先验概率
for i=1:10
    sum=sum+pattern(1,i).num;
end
for i=1:10
    pw(i)=pattern(1,i).num/sum;
end
%求判别函数
h=[];    %h()---差别函数
mean_data=[];   %mean_data---每类样品特征向量的均值
for i=1:10
    mean_data(i).data=mean(pattern(1,i).feature')';
end
%判别函数
for i=1:10
    h(i)=(pc_data-mean_data(i).data)'*s_inv(i).data*(pc_data-mean_data(i).data)...
        *(-0.5)+log(pw(i))+log(abs(s_det(i)))*(-0.5);
end
 
 
%求每一类的损失
%---------loss为损失矩阵,大小为10x10---------------------------------------
loss=ones(10)-diag(diag(ones(10))); %diag(ones(10))---取对角线元素,diag(diag(ones(10)))---构建以上面取得的对角线元素为新矩阵的对角线元素,其余元素为0的新的对角线元素。
risk=0;
m=[];   
 
for i=1:10
    m=loss(i,:);    %根据每一类损失的公式,第i类的损失等损失矩阵的第i行与判别函数的列向量相乘
    risk(i)=m*h';
end
[minval minpos]=min(risk);
y=minpos-1;
end
相关文章
|
监控 IDE 开发工具
【esp32c3配置arduino IDE教程】
设计用户操作界面,该设备具备简单易用的操作界面,外加显示屏SSD1306和旋转编码器进行显示和控制,用户后期可进行二次开发WiFi或蓝牙连接电脑或手机监控。
2972 0
|
SQL 关系型数据库 MySQL
MySQL执行SQL文件出现【Unknown collation ‘utf8mb4_0900_ai_ci‘】的解决方案
MySQL执行SQL文件出现【Unknown collation ‘utf8mb4_0900_ai_ci‘】的解决方案
MySQL执行SQL文件出现【Unknown collation ‘utf8mb4_0900_ai_ci‘】的解决方案
|
8月前
|
JavaScript 安全 前端开发
关于Node.js,一定要学这个10+万Star项目 !!
一篇关于Node.js的宝藏项目——Node.js Best Practices。该项目在GitHub上已有102k Star,汇集了100+条最佳实践,涵盖架构、安全、性能等多方面。每条实践不仅有简明说明和详细解释,还附带代码示例及资源链接。文中通过三个实战案例(利用CPU多核、避免阻塞事件循环、使用中间件处理错误)展示了其实际应用价值,并推荐了几条对前端转Node.js开发者特别有用的最佳实践。强烈建议每位Node.js开发者学习此项目,理解“怎么做”与“为什么要这么做”,以提升开发能力。
312 3
|
监控 小程序 物联网
阿里云物联网平台专用工具详细说明
阿里云物联网平台专用工具基本涵盖了阿里云物联网平台提供你主要管理功能,可以方便创建产品、设备、物模型,查看设备实时属性,事件,发送服务和查看服务日志等等。
1192 20
阿里云物联网平台专用工具详细说明
|
人工智能 搜索推荐 大数据
元宇宙教育:未来学习的新模式
【10月更文挑战第28天】随着科技的快速发展,元宇宙作为新兴的虚拟世界概念,正逐步渗透到教育领域。通过高度沉浸式体验、丰富的交互性和无限的扩展性,元宇宙教育打破了传统教学的局限,为学生提供全新的学习方式。本文探讨了元宇宙教育的定义、特点及未来应用前景,展示了其在历史、地理、科学实验等多学科中的具体应用,并展望了其推动知识传播、促进教育公平和创新教学方式的巨大潜力。
|
存储
计算机组成原理(8)----专用数据通路
计算机组成原理(8)----专用数据通路
735 1
|
9月前
|
机器学习/深度学习 人工智能 自然语言处理
AI 世界生存手册(二):从LR到DeepSeek,模型慢慢变大了,也变强了
大家都可以通过写 prompt 来和大模型对话,那大模型之前的算法是怎样的,算法世界经过了哪些比较关键的发展,最后为什么是大模型这条路线走向了 AGI,作者用两篇文章共5.7万字详细探索一下。 第一篇文章指路👉《AI 世界生存手册(一):从LR到DeepSeek,模型慢慢变大了,也变强了》
AI 世界生存手册(二):从LR到DeepSeek,模型慢慢变大了,也变强了
|
存储 关系型数据库 MySQL
为什么MySQL索引结构是B+tree ?
在MySQL中,为了提高检索效率和稳定性,采用了B+树作为索引的数据结构。相比二叉树或B树,B+树的非叶子节点仅存储key和指针,使得每页能容纳更多key,树的层级更浅,检索更快;所有数据集中在叶子节点,形成双向链表,利于区间查询。以16KB页为例,三层B+树可容纳约2190万条数据。
364 1
|
API 开发工具 vr&ar
从零开始的PICO教程(2)--搭建VR场景并打包至PICO中运行
这篇文章是PICO开发系列教程的第二部分,主要介绍了如何在Unity中搭建简单的VR场景、创建XR Origin对象、配置PICO开发环境、以及将场景打包并运行在PICO设备上的完整流程。
|
存储 人工智能 安全
LangChain-23 Vector stores 向量化存储 并附带一个实际案例 通过Loader加载 Embedding后持久化 LangChain ChatOpenAI ChatGLM3对话
LangChain-23 Vector stores 向量化存储 并附带一个实际案例 通过Loader加载 Embedding后持久化 LangChain ChatOpenAI ChatGLM3对话
494 0