当前位置: 首页 > news >正文

[机器学习]01-构建简单的贝叶斯分类器

  1. 第一部分:绘制两类后验概率密度函数(PDF)和样本分类结果。

  2. 第二部分:引入风险权重后,计算风险函数并重新分类,决策边界仍为x=0。

通过高斯分布和贝叶斯分布计算两类问题的分类预测,并可视化结果。

import numpy as np
import math
import matplotlib.pyplot as pltPw1 = 0.9
Pw2 = 0.1
ob = [-2.67, -3.55, -1.24, -0.98, -0.79, -2.85, -2.76, -3.73, -3.54, -2.27, -3.45, -3.08, -1.58, -1.49, -0.74, -0.42, -1.12, 4.25, -3.99, 2.88, -0.98, 0.79, 1.19, 3.07]
Pxw1_mean = -2
Pxw1_std = 1.5
Pxw2_mean = 2
Pxw2_std = 2
omi11 = 0
omi12 = 7
omi21 = 2
omi22 = 0def BackDensity(a, b, x):return (1 / (math.sqrt(2 * math.pi) * b)) * math.exp(-((x - a) ** 2) / (2 * b ** 2))x_range = np.linspace(min(ob) - 2, max(ob) + 2, 1000)
pdf_w1 = [Pw1 * BackDensity(Pxw1_mean, Pxw1_std, x) / (Pw1 * BackDensity(Pxw1_mean, Pxw1_std, x) + Pw2 * BackDensity(Pxw2_mean, Pxw2_std, x)) for x in x_range]
pdf_w2 = [Pw2 * BackDensity(Pxw2_mean, Pxw2_std, x) / (Pw1 * BackDensity(Pxw1_mean, Pxw1_std, x) + Pw2 * BackDensity(Pxw2_mean, Pxw2_std, x)) for x in x_range]plt.figure(figsize=(8, 6))
plt.plot(x_range, pdf_w1, label='Class w1 (Normal)', color='blue')
plt.plot(x_range, pdf_w2, label='Class w2 (Abnormal)', color='red')
plt.fill_between(x_range, pdf_w1, alpha=0.2, color='blue')
plt.fill_between(x_range, pdf_w2, alpha=0.2, color='red')
plt.title('Probability Density Functions')
plt.xlabel('Observation Value')
plt.ylabel('Probability Density')for x in ob:P1 = BackDensity(Pxw1_mean, Pxw1_std, x)P2 = BackDensity(Pxw2_mean, Pxw2_std, x)A = P1 * Pw1 / (P1 * Pw1 + P2 * Pw2)B = P2 * Pw2 / (P1 * Pw1 + P2 * Pw2)if A > B:plt.scatter(x,A,c='blue', marker='o', label=f'Class w1: {x}')elif A < B:plt.scatter(x,B,c='red', marker='x', label=f'Class w2: {x}')else:plt.scatter(x, 0.5, c='green', marker='s', label=f'Boundary: {x}')# 绘制决策界面
plt.axvline(x=0, color='green', linestyle='--', label='Decision Boundary')#plt.legend(fontsize='small')
plt.grid(True)
plt.show()x_range = np.linspace(min(ob) - 2, max(ob) + 2, 1000)
pdf_w1 = [Pw1 * BackDensity(Pxw1_mean, Pxw1_std, x) / (Pw1 * BackDensity(Pxw1_mean, Pxw1_std, x) + Pw2 * BackDensity(Pxw2_mean, Pxw2_std, x)) for x in x_range]
pdf_w2 = [Pw2 * BackDensity(Pxw2_mean, Pxw2_std, x) / (Pw1 * BackDensity(Pxw1_mean, Pxw1_std, x) + Pw2 * BackDensity(Pxw2_mean, Pxw2_std, x)) for x in x_range]
pdf_w11 = [aa*omi11+aa*omi12 for aa in pdf_w1]
pdf_w22 = [bb*omi21+bb*omi22 for bb in pdf_w2]
plt.figure(figsize=(8, 6))
plt.plot(x_range, pdf_w11, label='Class w1 (Normal)', color='blue')
plt.plot(x_range, pdf_w22, label='Class w2 (Abnormal)', color='red')
plt.fill_between(x_range, pdf_w11, alpha=0.2, color='blue')
plt.fill_between(x_range, pdf_w22, alpha=0.2, color='red')
plt.title('Probability Density Functions')
plt.xlabel('Observation Value')
plt.ylabel('Probability Density')for x in ob:P1 = BackDensity(Pxw1_mean, Pxw1_std, x)P2 = BackDensity(Pxw2_mean, Pxw2_std, x)A = P1 * Pw1 / (P1 * Pw1 + P2 * Pw2)B = P2 * Pw2 / (P1 * Pw1 + P2 * Pw2)R1 = (A * omi11 + A * omi12)R2 = (B * omi21 + B * omi22)if R1 > R2:plt.scatter(x,R2,c='blue', marker='o', label=f'Class w1: {x}')elif R1 < R2:plt.scatter(x,R1,c='red', marker='x', label=f'Class w2: {x}')else:plt.scatter(x, 0.5, c='green', marker='s', label=f'Boundary: {x}')# 绘制决策界面
plt.axvline(x=0, color='green', linestyle='--', label='Decision Boundary')#plt.legend(fontsize='small')
plt.grid(True)
plt.show()

运行结果:

http://www.dtcms.com/a/314223.html

相关文章:

  • 抓包相关知识学习
  • 项目复盘:Arena Of Furnace
  • vtkSSAAPass代码解析
  • [自动化Adapt] 回放策略 | AI模型驱动程序
  • Python异常捕获全指南
  • 智慧泵房赋能二次供水互联网化:物联网驱动下的全场景解决方案
  • Solidity全局变量与安全实践指南
  • Linux 文件与目录属性管理总结
  • 设备能力指标(CP/CPK)
  • C盘空间清理
  • JVM学习日记(十六)Day16——性能监控与调优(三)
  • AgxOrin平台JetPack5.x版本fix multi-cam race condition 补丁
  • 【Conda】常用指令操作
  • 机器学习——决策树(DecisionTree)+ 过采样 + 交叉验证 案例:电信客户流失数据
  • VAE学习笔记
  • Linux 网络深度剖析:传输层协议 UDP/TCP 原理详解
  • 【STM32】GPIO的输入输出
  • 正点原子STM32MP257开发板移植ubuntu24.04根文件系统(带桌面版)
  • Android的UI View是如何最终绘制成一帧显示在手机屏幕上?
  • Android Espresso 测试框架深度解析:从入门到精通
  • imx6ull-驱动开发篇8——设备树常用 OF 操作函数
  • 力扣热题100——哈希表
  • 大模型×垂直领域:预算、时间、空间三重夹击下的生存法则
  • 基于ensp的防火墙安全策略及认证策略综合实验
  • Flink CDC 介绍
  • PHP-分支语句、while循环、for循环
  • 深入理解Spring中的循环依赖及解决方案
  • 鸿蒙南向开发 编写一个简单子系统
  • 机器学习——学习路线
  • MySQL进阶:(第八篇)深入解析InnoDB存储架构