---
title: matlab贝叶斯分类器
tags: 机器学习
category: matlab
---
## <!-- more -->参考来源
<http://www.tup.tsinghua.edu.cn/booksCenter/book_07680201.html>
## 仓库链接
计算过程 和 实验结果 可以查看我仓库中,链接如下:
<https://github.com/tiansztiansz/Bayesian-classifier-based-on-matlab>
## 最小错误率贝叶斯分类器
代码如下:
```matlab
clear;
clc;
% 总训练样本数
N = 29;
% 类别数目
w = 4;
% 每一个样本的特征数
n = 3;
% 训练样本中每一类的数目
N1 = 4; N2 = 7; N3 = 8; N4 = 10;
%% 训练数据(注意这里列为记录,行为特征)
% A 属于类别 w1。这里就表示 A 有 3 个特征,4条记录
A = [
864.45 877.88 1418.79 1449.58;
1647.31 2031.66 1775.89 1641.58;
2665.9 3071.18 2772.9 3045.12
];
% B 属于类别 w2。这里就表示 B 有3个特征,7条记录
B = [
2352.12 2297.28 2092.62 2205.36 2949.16 2802.88 2063.54;
2557.04 3340.14 3177.21 3243.74 3244.44 3017.11 3199.76;
1411.53 535.62 584.32 1202.69 662.42 1984.98 1257.21
];
% C 属于类别 w3。这里就表示C有3个特征,8条记录
C = [
1739.94 1756.77 1803.58 1571.17 1845.59 1692.62 1680.67 1651.52;
1675.15 1652 1583.12 1731.04 1918.81 1867.5 1575.78 1713.28;
2395.96 1514.98 2163.05 1735.33 2226.49 2108.97 1725.1 1570.38
];
% D 属于类别 w4。这里就表示D有3个特征,10条记录
D = [
373.3 222.85 401.3 363.34 104.8 499.85 172.78 341.59 291.02 237.63;
3087.05 3059.54 3259.94 3477.95 3389.83 3305.75 3084.49 3076.62 3095.68 3077.78;
2429.47 2002.33 2150.98 2462.86 2421.83 3196.22 2328.65 2438.63 2088.95 2251.96
];
% 计算每一类的平均值
X1 = mean(A')'
X2 = mean(B')'
X3 = mean(C')'
X4 = mean(D')'
% 每种类型的训练样本的协方差矩阵
S1 = cov(A')
S2 = cov(B')
S3 = cov(C')
S4 = cov(D')
% 每种类型的训练样本的逆矩阵
S1_ = inv(S1)
S2_ = inv(S2)
S3_ = inv(S3)
S4_ = inv(S4)
% 方差矩阵的行列式
S11 = det(S1)
S22 = det(S2)
S33 = det(S3)
S44 = det(S4)
% 先验概率
Pw1 = N1 / N
Pw2 = N2 / N
Pw3 = N3 / N
Pw4 = N4 / N
% 测试数据。注意这里的数据和上面的训练数据样式有一点差别,这里行是记录、列是特征
sample = [1702.8 1639.79 2068.74
1877.93 1860.96 1975.3
867.81 2334.68 2535.1
1831.49 1713.11 1604.68
460.69 3274.77 2172.99
2374.98 3346.98 975.31
2271.89 3482.97 946.7
1783.64 1597.99 2261.31
198.83 3250.45 2445.08
1494.63 2072.59 2550.51
1597.03 1921.52 2126.76
1598.93 1921.08 1623.33
1243.13 1814.07 3441.07
2336.31 2640.26 1599.63
354 3300.12 2373.61
2144.47 2501.62 591.51
426.31 3105.29 2057.8
1507.13 1556.89 1954.51
343.07 3271.72 2036.94
2201.94 3196.22 935.53
2232.43 3077.87 1298.87
1580.1 1752.07 2463.04
1962.4 1594.97 1835.95
1495.18 1957.44 3498.02
1125.17 1594.39 2937.73
24.22 3447.31 2145.01
1269.07 1910.72 2701.97
1802.07 1725.81 1966.35
1817.36 1927.4 2328.79
1860.45 1782.88 1875.13];
% 遍历测试样本的 30 条记录
for k = 1:30
% 计算后验概率
P1 = -1/2 * (sample(k, :)' - X1)' * S1_ * (sample(k, :)' - X1) + log(Pw1) - 1/2 * log(S11);
P2 = -1/2 * (sample(k, :)' - X2)' * S2_ * (sample(k, :)' - X2) + log(Pw2) - 1/2 * log(S22);
P3 = -1/2 * (sample(k, :)' - X3)' * S3_ * (sample(k, :)' - X3) + log(Pw3) - 1/2 * log(S33);
P4 = -1/2 * (sample(k, :)' - X4)' * S4_ * (sample(k, :)' - X4) + log(Pw4) - 1/2 * log(S44);
% 寻找4个类别中的最大后验概率
P = [P1 P2 P3 P4]
Pmax = max(P)
% 判别哪一类的后验概率为最大后验概率,并绘制分类图像和后验概率分布图像
if P1 == max(P)
w = 1
figure(1)
plot3(sample(k, 1), sample(k, 2), sample(k, 3), 'ro'); grid on; hold on;
title('基于最小错误率的分类结果示意图');
xlabel('第一特征坐标');
ylabel('第二特征坐标');
zlabel('第三特征坐标');
figure(2)
plot(P); grid on; hold on;
title('后验概率的分布曲线');
xlabel('类别');
ylabel('后验概率');
elseif P2 == max(P)
w = 2
figure(1)
plot3(sample(k, 1), sample(k, 2), sample(k, 3), 'b>'); grid on; hold on;
title('基于最小错误率的分类结果示意图');
xlabel('第一特征坐标');
ylabel('第二特征坐标');
zlabel('第三特征坐标');
figure(2)
plot(P); grid on; hold on;
title('后验概率的分布曲线');
xlabel('类别');
ylabel('后验概率');
elseif P3 == max(P)
w = 3
figure(1)
plot3(sample(k, 1), sample(k, 2), sample(k, 3), 'g+'); grid on; hold on;
title('基于最小错误率的分类结果示意图');
xlabel('第一特征坐标');
ylabel('第二特征坐标');
zlabel('第三特征坐标');
figure(2)
plot(P); grid on; hold on;
title('后验概率的分布曲线');
xlabel('类别');
ylabel('后验概率');
elseif P4 == max(P)
w = 4
figure(1)
plot3(sample(k, 1), sample(k, 2), sample(k, 3), 'y*'); grid on; hold on;
title('基于最小错误率的分类结果示意图');
xlabel('第一特征坐标');
ylabel('第二特征坐标');
zlabel('第三特征坐标');
figure(2)
plot(P); grid on; hold on;
title('后验概率的分布曲线');
xlabel('类别');
ylabel('后验概率');
else
return
end
end
```
## 最小风险贝叶斯决策
```matlab
clear;
clc;
% 总训练样本数
N = 29;
% 类别数目
w = 4;
% 每一个样本的特征数
n = 3;
% 训练样本中每一类的数目
N1 = 4; N2 = 7; N3 = 8; N4 = 10;
%% 训练数据(注意这里列为记录,行为特征)
% A 属于类别 w1。这里就表示 A 有 3 个特征,4条记录
A = [
864.45 877.88 1418.79 1449.58;
1647.31 2031.66 1775.89 1641.58;
2665.9 3071.18 2772.9 3045.12
];
% B 属于类别 w2。这里就表示 B 有3个特征,7条记录
B = [
2352.12 2297.28 2092.62 2205.36 2949.16 2802.88 2063.54;
2557.04 3340.14 3177.21 3243.74 3244.44 3017.11 3199.76;
1411.53 535.62 584.32 1202.69 662.42 1984.98 1257.21
];
% C 属于类别 w3。这里就表示C有3个特征,8条记录
C = [
1739.94 1756.77 1803.58 1571.17 1845.59 1692.62 1680.67 1651.52;
1675.15 1652 1583.12 1731.04 1918.81 1867.5 1575.78 1713.28;
2395.96 1514.98 2163.05 1735.33 2226.49 2108.97 1725.1 1570.38
];
% D 属于类别 w4。这里就表示D有3个特征,10条记录
D = [
373.3 222.85 401.3 363.34 104.8 499.85 172.78 341.59 291.02 237.63;
3087.05 3059.54 3259.94 3477.95 3389.83 3305.75 3084.49 3076.62 3095.68 3077.78;
2429.47 2002.33 2150.98 2462.86 2421.83 3196.22 2328.65 2438.63 2088.95 2251.96
];
% 计算每一类的平均值
X1 = mean(A')'
X2 = mean(B')'
X3 = mean(C')'
X4 = mean(D')'
% 每种类型的训练样本的协方差矩阵
S1 = cov(A')
S2 = cov(B')
S3 = cov(C')
S4 = cov(D')
% 每种类型的训练样本的逆矩阵
S1_ = inv(S1)
S2_ = inv(S2)
S3_ = inv(S3)
S4_ = inv(S4)
% 方差矩阵的行列式
S11 = det(S1)
S22 = det(S2)
S33 = det(S3)
S44 = det(S4)
% 先验概率
Pw1 = N1 / N
Pw2 = N2 / N
Pw3 = N3 / N
Pw4 = N4 / N
% 测试数据。注意这里的数据和上面的训练数据样式有一点差别,这里行是记录、列是特征
sample = [1702.8 1639.79 2068.74
1877.93 1860.96 1975.3
867.81 2334.68 2535.1
1831.49 1713.11 1604.68
460.69 3274.77 2172.99
2374.98 3346.98 975.31
2271.89 3482.97 946.7
1783.64 1597.99 2261.31
198.83 3250.45 2445.08
1494.63 2072.59 2550.51
1597.03 1921.52 2126.76
1598.93 1921.08 1623.33
1243.13 1814.07 3441.07
2336.31 2640.26 1599.63
354 3300.12 2373.61
2144.47 2501.62 591.51
426.31 3105.29
%小红书%bin
- 粉丝: 2086
- 资源: 2148
最新资源
- 这是一个筛选菜单库,开发者只需要填充数据即可,在很多App上都能看到这个效果,如美团,爱奇艺,大众点评等.zip
- Flask Web应用程序与PostgreSQL数据库集成实现API及自动化脚本构建工具
- 这是一个运动健身类app,纺大夜跑团 ,能够根据gps或网络定位来实时绘制跑步轨迹; (毕业设计 后台管理系统 学生管理系统 教务管理系统 学校管理系统 毕设 管理平台 数据管理系统 后端开发.zip
- html+css网页设计 美食 美食模版2个页面
- 遥感大数据012345.zip
- 阿里天池比赛 印象盐城·数创未来大数据竞赛 - 盐城汽车上牌量预测.zip
- 阿里巴巴天池大数据竞赛.zip
- 零代,项目脚手架,包括Web应用、WebApi接口、微服务、控制台、定时调度任务、大数据计算、物联网等项目模板.zip
- chrome 原生 netlog抓去
- 零基础大数据学习笔记.zip
- 高并发但每次爬取数据量不大的分布式爬虫 .zip
- 机械设计笔记本电脑自动搬运压合测试站sw16非常好的设计图纸100%好用.zip
- simulink 双馈风机稳态模型 包含最大功率跟踪控制,MPPT,参数可调 (1)转子侧变器采用基于定子电压定向的矢量控制策略,可以有功无功解耦,具备MPPT能力,采用功率外环电流内环双闭环控制结构
- 浪潮端到端产品安全保障体系:2021年度网络安全实践与展望
- Fluent的颗粒流 稀疏颗粒常使用DPM模型进行解决 不考虑颗粒碰撞变形,但考虑颗粒之间的碰撞行为,可以使用欧拉颗粒流模型 考虑颗粒碰撞摩擦以及变形,可以使用其内置的DEM模型,也可以采用与其他D
- python入门教程资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈