一、实验目的


二、实验原理
贝叶斯决策理论方法是统计模型决策中的一个基本方法,其基本思想是:
1.已知类条件概率密度参数表达式和先验概率
2.利用贝叶斯公式转换成后验概率
3.根据后验概率大小进行决策分类。
因为两类条件概率密度函数符合不同正态分布,因此可以根据两类数据集的分布计算出两类判别函数。判断时,该点哪类判别函数大,则判为哪类。
根据密度公式及判别函数

可得

其中

使g1(x)=g2(x),即可获得x2关于x1的函数,为两类在x1及x2坐标系下的决策面
具体实现程序与代码解释如下

import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import scipy.stats as stats
import sympy
from sympy import *# In[]  第一类数据计算
Pw1=0.5        #1类先验概率
E1=np.matrix([[1,0],[0,2]])     #1类 协方差矩阵
E1_=E1.I                       #协方差矩阵逆矩阵
u1=np.matrix([[-1,0]]).T      #平均值矩阵
W1=-0.5*E1_                     #参量W1
w1=E1_*u1                          #参量w1
w10=-0.5*u1.T*E1_*u1            #参量w01# In[]  第二类数据计算  各行作用同上
Pw2=0.5
E2=np.matrix([[2,0],[0,1]])
E2_=E2.I
u2=np.matrix([[1,2]]).T
W2=-0.5*E2_
w2=E2_*u2
w20=-0.5*u2.T*E2_*u2# In[]  求解判别函数
x1=Symbol("x1")   #定义变量x1  x1和x2为两个维度的坐标
x2=Symbol("x2")   #定义变量x2g1x=np.matrix([[x1],[x2]]).T*W1*np.matrix([[x1],[x2]])+w1.T*np.matrix([[x1],[x2]])+w10  #1类判别函数
g2x=np.matrix([[x1],[x2]]).T*W2*np.matrix([[x1],[x2]])+(w2.T*np.matrix([[x1],[x2]]))+w20 #2类判别函数
a=solve(g1x[0,0]-g2x[0,0],x2)  #求x1与x2函数式
print("x2=%s"%a)   #输出决策面函数式a1 = np.array(a)  #获取函数式
b = [0]*len(a1)   #函数式个数
x1 = np.linspace( -5, 5, 100) #作图x1坐标
for i in range(len(a1)):      #循环获取两个函数式x2坐标    此处有两个函数式循环两遍  b[i] = str(a1[i])        b_m = b[i].replace('[','').replace(']','')b[i] = b_m
for i in range(len(a1)):      #绘制每一个决策面    此处有两个函数式循环两遍plt.plot(x1,eval(b[i]),color='#000000') #画图
plt.xlabel('x1')
plt.ylabel('x2')
plt.title('decision function')# In[] 随机生成散点
x11 = np.random.normal(-1,1,500) # 随机产生500个平均值为-1,方差为1的浮点数,即第一簇点的x1轴坐标
x21 = np.random.normal(0,2**0.5,500) # 随机产生500个平均值为0,方差为2的浮点数,即第一簇点的x2轴坐标
x12 = np.random.normal(1,2**0.5,500)
x22 = np.random.normal(2,1,500)
colors1 = '#00CEF1' #点的颜色
colors2 = '#DC141C'
area = np.pi * 2.5**2  # 点面积
plt.scatter(x11, x21, s=area, c=colors1, alpha=0.4, label='A')
plt.scatter(x12, x22, s=area, c=colors2, alpha=0.4, label='B')# 画散点图ratru1=len(x21[x21<1-x11])/500   #计算第一类分类正确率
ratru2=len(x22[x22>1-x12])/500   #计算第二类分类正确率
print("第一类正确率=%s"%ratru1)
print("第二类正确率=%s"%ratru2)

输出结果如下:
由于散点随机生成,每次计算得到的正确率不相等,但结果相近

x2=[1.0 - x1, x1 + 7.0]
第一类正确率=0.862
第二类正确率=0.892

Python贝叶斯决策面计算及仿真相关推荐

  1. python 量子计算包_ProjectQ:解锁Python实现量子计算的新方式!

    原标题:ProjectQ:解锁Python实现量子计算的新方式! [ ] [IT168 资讯]现在已经有很多软件框架可用于访问量子计算机,本文将要提到的ProjectQ就是其中之一.ProjectQ是 ...

  2. 基于阿里云函数计算实现需要用到超大依赖包的 Python 无服务器计算

    文章目录 引言 一.阿里云函数计算是什么? 开发流程 函数计算的触发调用 函数计算运行实例的生命周期 二.示例应用的架构及简介 三.具体开发部署步骤所遇到的坑和~~避坑指南~~ 坑1. 超大依赖包的部 ...

  3. 使用Python、OpenCV计算轮廓的中心

    1. 使用Python.OpenCV计算轮廓的中心并标记 2. 使用Python.OpenCV检测轮廓的形状并标记 3. 使用颜色通道统计信息来标记形状的实际颜色并标记 本博客的目标:(1)检测图像中 ...

  4. 使用Python,OpenCV计算图像直方图(cv2.calcHist)

    使用Python,OpenCV计算图像直方图(cv2.calcHist 1. 效果图 2. 原理 2.1 什么是图像直方图? 2.2 计算直方图 2.3 可视化蒙版区域 3. 源码 参考 这篇博客将介 ...

  5. python使用pandas计算dataframe中每个分组的分位数极差、分组数据的分位数极差(range)、使用groupby函数和agg函数计算分组的两个分位数

    python使用pandas计算dataframe中每个分组的分位数极差.分组数据的分位数极差(range).使用groupby函数和agg函数计算分组的两个分位数 目录

  6. python使用pandas计算dataframe中每个分组的极差、分组数据的极差(range)、使用groupby函数和agg函数计算分组的最大值和最小值

    python使用pandas计算dataframe中每个分组的极差.分组数据的极差(range).使用groupby函数和agg函数计算分组的最大值和最小值 目录

  7. python题目关于企业利润_【每日一练】巧用python实现利润计算

    原标题:[每日一练]巧用python实现利润计算 相信很多小伙伴都遇到过阶梯利率的问题,比如说银行的利息计算,不同阶段的本金有不同的利率:税务的税费计算,不同的营收有不同的缴纳率:个人的提成,不同的销 ...

  8. python输入数字翻译成星期几-Python练习笔记——计算输入日期为改年的第几天、星期几...

    # 输入年月日,如:1995年12月10日,计算是该年的第几天? # 同时计算出当天是星期几? print("请依据提示依次输入您想查询的年 月 日") # 第一段代码块(年月日输 ...

  9. python科学计算基础教程pdf下载-用Python做科学计算 高清晰PDF

    用Python做科学计算一书介绍如何用Python开发科学计算的应用程序,除了介绍数值计算之外,我们还将着重介绍如何制作交互式的2D.3D图像:如何设计精巧的程序界面:如何和C语言所编写的高速计算程序 ...

  10. python科学计算基础教程pdf下载-用Python做科学计算 pdf版

    本书将介绍如何用Python开发科学计算的应用程序,除了介绍数值计算之外,我们还将着重介绍如何制作交互式的2D.3D图像:如何设计精巧的程序界面:如何和C语言所编写的高速计算程序结合:如何编写声音.图 ...

最新文章

  1. python 选择题 多线程_python多线程一些知识点梳理
  2. 日志库EasyLogging++学习系列(2)—— 日志级别
  3. JAVA——JUNIT运行错误[No tests were found]
  4. 诺顿本月将发布儿童网络安全软件
  5. SAP UI技术演进过程
  6. 构造函数还是静态工厂方法?
  7. Unity罗技方向盘接入
  8. 那些配置修改之后需要重新启动
  9. 小米8 android9手势,当小米8SE遇到安卓9.0,体验提升一个等级!
  10. Rabbitmq 延迟队列
  11. 声卡测试音频100Hz~1KHz
  12. html js打开一个新页面跳转,js页面跳转
  13. RTL8761ATV-CG蓝牙芯片4.0模块Realtek蓝牙驱动
  14. Unity特效制作规范
  15. 解决第三方网页在微信浏览器中点击图片会自动放大
  16. 多态的实现机制是什么?
  17. 解决latex提示Warning: Font shape `TU/phv/m/n‘ undefined (Font)
  18. 低成本2.4G+MCU的SOC芯片,极其适合做低成本玩具灯控等方案
  19. Python:利用Pillow库创建字符画
  20. spark入门三(RDD基本运算)

热门文章

  1. HTML多选框,全选,多选
  2. iOS GPS定位减小精度误差的几种处理方法
  3. java rf14bug_让云平台发生重大宕机事故的15个方法
  4. SMBv3 BSoD 0day
  5. 用DOS写一个简单的虚拟WIFI工具,CMD电脑无线WIFI工具,BAT实现WIFI和自动关机
  6. 计算机如何解锁 磁盘,win7电脑磁盘被写保护如何解除,电脑磁盘被写保护解除方法...
  7. 如何使用win10自带的录屏工具录制视频
  8. 计算机考研复试题(近十万字)
  9. 进制转换—任意进制乘法表
  10. java解析bt协议详解_bt协议详解 基础篇(下)