Python贝叶斯决策面计算及仿真
一、实验目的
二、实验原理
贝叶斯决策理论方法是统计模型决策中的一个基本方法,其基本思想是:
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贝叶斯决策面计算及仿真相关推荐
- python 量子计算包_ProjectQ:解锁Python实现量子计算的新方式!
原标题:ProjectQ:解锁Python实现量子计算的新方式! [ ] [IT168 资讯]现在已经有很多软件框架可用于访问量子计算机,本文将要提到的ProjectQ就是其中之一.ProjectQ是 ...
- 基于阿里云函数计算实现需要用到超大依赖包的 Python 无服务器计算
文章目录 引言 一.阿里云函数计算是什么? 开发流程 函数计算的触发调用 函数计算运行实例的生命周期 二.示例应用的架构及简介 三.具体开发部署步骤所遇到的坑和~~避坑指南~~ 坑1. 超大依赖包的部 ...
- 使用Python、OpenCV计算轮廓的中心
1. 使用Python.OpenCV计算轮廓的中心并标记 2. 使用Python.OpenCV检测轮廓的形状并标记 3. 使用颜色通道统计信息来标记形状的实际颜色并标记 本博客的目标:(1)检测图像中 ...
- 使用Python,OpenCV计算图像直方图(cv2.calcHist)
使用Python,OpenCV计算图像直方图(cv2.calcHist 1. 效果图 2. 原理 2.1 什么是图像直方图? 2.2 计算直方图 2.3 可视化蒙版区域 3. 源码 参考 这篇博客将介 ...
- python使用pandas计算dataframe中每个分组的分位数极差、分组数据的分位数极差(range)、使用groupby函数和agg函数计算分组的两个分位数
python使用pandas计算dataframe中每个分组的分位数极差.分组数据的分位数极差(range).使用groupby函数和agg函数计算分组的两个分位数 目录
- python使用pandas计算dataframe中每个分组的极差、分组数据的极差(range)、使用groupby函数和agg函数计算分组的最大值和最小值
python使用pandas计算dataframe中每个分组的极差.分组数据的极差(range).使用groupby函数和agg函数计算分组的最大值和最小值 目录
- python题目关于企业利润_【每日一练】巧用python实现利润计算
原标题:[每日一练]巧用python实现利润计算 相信很多小伙伴都遇到过阶梯利率的问题,比如说银行的利息计算,不同阶段的本金有不同的利率:税务的税费计算,不同的营收有不同的缴纳率:个人的提成,不同的销 ...
- python输入数字翻译成星期几-Python练习笔记——计算输入日期为改年的第几天、星期几...
# 输入年月日,如:1995年12月10日,计算是该年的第几天? # 同时计算出当天是星期几? print("请依据提示依次输入您想查询的年 月 日") # 第一段代码块(年月日输 ...
- python科学计算基础教程pdf下载-用Python做科学计算 高清晰PDF
用Python做科学计算一书介绍如何用Python开发科学计算的应用程序,除了介绍数值计算之外,我们还将着重介绍如何制作交互式的2D.3D图像:如何设计精巧的程序界面:如何和C语言所编写的高速计算程序 ...
- python科学计算基础教程pdf下载-用Python做科学计算 pdf版
本书将介绍如何用Python开发科学计算的应用程序,除了介绍数值计算之外,我们还将着重介绍如何制作交互式的2D.3D图像:如何设计精巧的程序界面:如何和C语言所编写的高速计算程序结合:如何编写声音.图 ...
最新文章
- python 选择题 多线程_python多线程一些知识点梳理
- 日志库EasyLogging++学习系列(2)—— 日志级别
- JAVA——JUNIT运行错误[No tests were found]
- 诺顿本月将发布儿童网络安全软件
- SAP UI技术演进过程
- 构造函数还是静态工厂方法?
- Unity罗技方向盘接入
- 那些配置修改之后需要重新启动
- 小米8 android9手势,当小米8SE遇到安卓9.0,体验提升一个等级!
- Rabbitmq 延迟队列
- 声卡测试音频100Hz~1KHz
- html js打开一个新页面跳转,js页面跳转
- RTL8761ATV-CG蓝牙芯片4.0模块Realtek蓝牙驱动
- Unity特效制作规范
- 解决第三方网页在微信浏览器中点击图片会自动放大
- 多态的实现机制是什么?
- 解决latex提示Warning: Font shape `TU/phv/m/n‘ undefined (Font)
- 低成本2.4G+MCU的SOC芯片,极其适合做低成本玩具灯控等方案
- Python:利用Pillow库创建字符画
- spark入门三(RDD基本运算)