编程设计一个基于条件风险最小的Bayes分类器:

要求:

  1. 混淆矩阵维度可任意设定
  2. 先验概率基于训练样本集自动求得
  3. 样本属性数量可任意输入设定

朴素贝叶斯求条件风险最小公式:

训练数据集:

代码:

import numpy as np
import pandas as pdXY = pd.read_excel('d1.xls')
dset = np.array(XY)
def calc_ent(dset):r = np.shape(dset)[0]c = np.shape(dset)[1]l_count = {}for i in range(r):label = dset[i][c-1]if label not in l_count:l_count[label] = 0l_count[label] += 1for i in l_count.keys():l_count[i] = l_count[i]/rreturn l_countdef pXy(dset, X, y):row = np.shape(dset)[0]  # 行数clm = np.shape(dset)[1]  # 列数dlect = np.empty([0, clm], dtype=type(dset))for i in range(row):if (dset[i][clm - 1] == y):dlect = np.append(dlect, [dset[i]], axis=0)PXy = 1num = 0n = len(dlect)for j in range(clm - 1):for i in range(n):if (isinstance(dlect[i][j], str)):if (dlect[i][j] == X[j]):num += 1else:s = str(dlect[i][j])if (s == X[j]):num += 1PXy = PXy * (num / n)# print(f"{X[j]}num的值为{num}")num = 0return PXyX = np.array(['大' ,'红','圆'])
py = calc_ent(dset)
bn = len(py)
hx = np.empty([bn,bn], dtype = int)
for j in range(bn):for i in range(bn):if(i == j):hx[j][i] = 0else:hx[j][i] = 1R_y_X = 0
j = 0
for i in range(bn):for key in py.keys():if(j == i):keyi = keyR_y_X += hx[i][j] * py[key] * pXy(dset, X, key)j += 1if(i == 0):min_RyX = R_y_Xmin_key = keyielse:if(R_y_X < min_RyX):min_RyX = R_y_Xmin_key = keyiprint(f"{X}被分为{keyi}的条件风险是:{R_y_X}")R_y_X = 0j = 0
print("\n")
print(f"所以{X}被分为{min_key}的条件风险最小,为{min_RyX}")

运行结果:

注:仅供学习参考,不要抄袭!

编程设计一个基于条件风险最小的Bayes分类器相关推荐

  1. 编程设计一个购房贷款计算器

    编程设计一个购房贷款计算器. 基于"总价.首付.贷款年限.利息.贷款额度"信息,计算每月最低还款额度.需要能按"等额本金.等额本息.自由还款"三种形式计算还款. ...

  2. 设计一个基于GUI的扑克程序

    2019独角兽企业重金招聘Python工程师标准>>> 在本课程教材扑克牌代码的基础上,设计一个基于GUI的扑克程序 a) 可以显示 52 张扑克牌,包括洗牌,发牌在内(2) b) ...

  3. 设计一个基于用户的API限流策略 Rate Limit

    设计一个基于用户的API限流策略 Rate Limit 应用场景 API接口的流量控制策略:缓存.降级.限流.限流可以认为服务降级的一种,限流就是限制系统的输入和输出流量已达到保护系统的目的.限流策略 ...

  4. 基于PLC的升降横移立体停车库的设计,设计一个基于西门子S7-200 PLC控制核心的

    基于PLC的升降横移立体停车库的设计,设计一个基于西门子S7-200 PLC控制核心的,三层三列,九个车位的立体停车控制系统. 目录3 1 绪 论4 2 设计要求5 3 硬件设计8 3.1 PLC型号 ...

  5. 用switch语句编程设计一个简单的计算器程序

    用switch语句编程设计一个简单的计算器程序. 要求根据用户从键盘输入的表达式(注意操作数与运算符之间没有空格): 操作数1 运算符op 操作数2 计算表达式的值,指定的算术运算符为加(+).减(- ...

  6. 编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式,操作数

    编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式,操作数 首先,先写出各类计算的函数,参数从主函数中提取,返回计算后所得的值 因计算器不只要求能计算加减乘除,所以所有函数类型都为doubl ...

  7. 编程设计一个简单的计算器程序

    要求 用switch语句编程设计一个简单的计算器程序.要求根据用户从键盘输入的表达式. 操作数1 运算符op 操作数2 计算表达式的值.指定的算术运算符为加(+).减(-).乘(*).除(/). 当除 ...

  8. 编写用switch语句编程设计一个简单的计算器程序

    编程要求 根据提示,在右侧编辑器补充代码.要求用switch语句编程设计一个简单的计算器程序.要求根据用户从键盘输入的表达式. 操作数1 运算符op 操作数2 计算表达式的值.指定的算术运算符为加(+ ...

  9. c语言12之编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式:操作数1 运算符op 操作数2 计算表达式的值,指定的运算符为加减乘除。

    题目: 设计一个简单的计算器程序,要求根据用户从键盘输入的表达式: 操作数1 运算符op 操作数2 计算表达式的值,指定的运算符为加减乘除. 源代码: #include<stdio.h> ...

最新文章

  1. java对象转json字符串日期格式_fastJSON字符串类型数据中的日期转换为Java bean的日期对象...
  2. ubuntu 12.04 配置vsftpd 服务,添加虚拟用户,ssl加密
  3. 很炫的shell theme
  4. 实战例子_Pytorch官方力荐新书《Pytorch深度学习实战指南》pdf及代码分享
  5. Exchange server 2013(十四)WSUS部署及组策略设置(2)
  6. js 数据写到本地记事本_微信小程序连接Mysql数据库步骤
  7. 你真的了解特洛伊木马吗!
  8. python是交互式语言吗_什么是Python交互式解释器
  9. 想要在工作中脱颖而出?这几款优秀的PC软件能够帮你
  10. python中abs函数是什么意思_python中abs是什么意思
  11. coffeescript html5,CoffeeScript函数
  12. Codeforces Round #828 (Div. 3) E2. Divisible Numbers (hard version)
  13. 从 sourcemap 中获取源码
  14. 牛客每日一题系列(持续更新)
  15. 常见的数据可视化方式
  16. [野狐行][辅助开发系列课程][2016/4/27][一重门公开课全集][官方网站已开放]
  17. Web开发和WSGI
  18. 2021年腾讯服务器维护,2021年研究报告
  19. 金山文字也识Excel表格(转)
  20. 天津铁路工程投资控制系统-原来的文件打不开了,显示数据库错误

热门文章

  1. 非常有用的一个正则表达式.匹配多个任意字符
  2. 汇川H5U模拟量输入模拟量转换 FC S_ITR
  3. qgraphicsview 绘图软件 github_重磅推荐!免费在线分析与绘图神器分享
  4. PHP中高级面试题2018(1)
  5. context menu
  6. Unable to apply any optimisations to advised method 信息解析
  7. 以太坊合并60天,算通过大考验了吗?何时迈入星辰大海?
  8. python 3.8安装pymssql
  9. Magic value如何解决?
  10. 深度学习之目标检测(十一)--DETR详解