第二个作业:贝叶斯估计

2023-11-10

第二个作业:贝叶斯估计实战

第一小题:试使用西瓜数据集3.0作为训练集,通过AIC准则构建一个贝叶斯网

我先看看scikit-learn官网上关于贝叶斯估计,特别是贝叶斯网的构建方面的包和函数。然后再看看这个AIC准则具体是怎么样的。

如何构造一个贝叶斯网络

如何构造一个贝叶斯网。

from pgmpy.models import BayesianModel

我看到这个pgmpy,这个是什么?

pgmpy

pgmpy是一个单纯的针对贝叶斯网络的python包。我不清楚这个pgmpy是否支持现在西瓜数据集中离散数据和连续值数据混合的情况。

暂时先不管这个,我先把pgmpy中的有用的函数看完。

from pgmpy.factors.discrete.CPD import TabularCPD

这个TabularCPD是什么东西呢?
大概明白了,是构造需要输入的条件变量概率组成的条件概率表函数。

连续数据离散化

字符串型离散数据变为数值类型可以使用OrdinalEncoder,但是连续型数据离散化(一般的贝叶斯网络都支持离散数据)方法未知。

方法包括:
(1)等宽法:将属性中的最大最小值提取出来,然后使用等宽度的区域切分,标记为0,1,2…
(2)基于聚类的方法:将数据聚类处理。

我打算对含糖率和密度采用聚类的方式来进行连续值离散化处理,大体要分割成三个簇,代表密度低、较低、高;含糖率低、较低、高。

聚类的办法:

使用K-means聚类算法:
K=3.

from sklearn.cluster import KMeans
# 将连续数据一列一列抽出来做聚类。
# 这里必须要reshape(-1,1)?
c_d_1 = (c_d[:,0]).reshape(-1,1)
c_d_2 = (c_d[:,1]).reshape(-1,1)
kmeans_1 = KMeans(n_clusters=3, random_state=0).fit(c_d_1) 
c_1 = kmeans_1.labels_
kmeans_2 = KMeans(n_clusters=3, random_state=0).fit(c_d_2)
c_2 = kmeans_2.labels_
c_1 = c_1.transpose()
c_2 = c_2.transpose()
continuous_data  = np.hstack((c_1,c_2))

完成连续数据离散化
接下来完成字符串型离散数据向数值型数据的转换.

字符串型离散数据向数值型数据的转换.
from sklearn.preprocessing import OrdinalEncoder
enc = OrdinalEncoder()
# d_d:离散数据
enc.fit(d_d)
discrete_data = enc.fit_transform(d_d)
# 数据类型更改:
continuous_data = continuous_data.astype(np.float32)
discrete_data = discrete_data.astype(np.float32)
T_data = np.hstack((discrete_data, continuous_data))

数据预处理完成.

网络结构

这里就需要用到pgmpy这个包了,我首先在anaconda propmt中用

pip install pgmpy

完成对pgmpy的安装,但是出现了奇怪的事情,就是jupyter notebook中一直找不到这个包。

如何查看jupyter中的安装包

笨蛋,使用jupyter的魔术命令啊,这个就可以帮助我在jupyter虚拟环境中直接使用pip了。

查看安装包:

!pip list

我就直接在jupyter notebook的虚拟环境中直接安装,成功了

!pip install pgmpy
DataFrame对象该如何构造:
Raw_data = pd.DataFrame(whole_data, columns=['色泽','根蒂','敲声','纹理','脐部','触感','密度','含糖率','好瓜'])
构造贝叶斯网络模型:

代码如下:

model = BayesianModel([['色泽','好瓜'],['根蒂','好瓜'],['敲声','好瓜'],['纹理','好瓜'],['脐部','好瓜'],['触感','好瓜'],['密度','好瓜'],['含糖率','好瓜']])
model.fit(Raw_data, estimator=BayesianEstimator, prior_type="BDeu")

好了,我们的贝叶斯网络模型训练好了,因为我的网络结构是我主观上设计的,所以可能会造成最终精度不高。

什么是AIC准则,如何使用AIC准则构造合适的贝叶斯网络

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第二个作业:贝叶斯估计 的相关文章

随机推荐

  • Redis单机版全面讲解

    目录 常识 什么是redis redis为什么快 redis作为实例安装在系统中 redis数据类型 redis命令 String类型相关命令 list类型相关命令 hash类型相关命令 set类型相关命令 zset类型相关命令 redis
  • LAN8720A网络模块的使用问题

    一 LAN8720A模块驱动电路 最近在调试STM32F4驱动LAN8720A网络模块 在做方案前参考是正点原子的LAN8720A的驱动电路方案 但是从网上买回来的LAN8720A模块用正点原子的例程一直驱动不起来 在windows系统下一
  • vue提示插件[vscode]

    在VSCode Marketplace 搜素Vue 出现关于语法高亮的插件有 vue vue beautify vue color VueHelper vertur等等 比较了下载数量可以了解到 vetur 是目前比较好的语法高亮插件 我们
  • Eclipse使用(Java基础)&Spring boot学习(一)

    Eclipse安装 这个很简单 搜索一下Eclipse下载即可 我是在这里下的 然后选个开发环境 C 的话我会在Visual Studio下写 所以只装了Java 一路next就好 没有什么坑 Hello World Create a Ja
  • HADOOP介绍

    1 HADOOP背景介绍 1 1 什么是HADOOP HADOOP是apache旗下的一套开源软件平台 HADOOP提供的功能 利用服务器集群 根据用户的自定义业务逻辑 对海量数据进行分布式处理 HADOOP的核心组件有 HDFS 分布式文
  • 嵌入式操作系统风云录:历史演进与物联网未来.

    嵌入式操作系统风云录 历史演进与物联网未来 何小庆 著 图书在版编目 CIP 数据 嵌入式操作系统风云录 历史演进与物联网未来 何小庆著 北京 机械工业出版社 2016 10 ISBN 978 7 111 55085 3 嵌 何 实时操作系
  • Java项目结构概述

    文章目录 前言 一 项目结构介绍 1 单模块项目结构 2 多模块项目结构 3 分层结构 4 MVC项目结构 5 插件化结构项目 6 微服务架构结构 总结 前言 构建一个良好的Java项目结构是开发高质量 可扩展和易维护应用程序的重要基础 在
  • skimage图像的读取与保存

    首先 说明用opencv与skimage io imread读取和保存图片的区别 读取和保存后的都是numpy格式 但cv2的读取和存储格式是BGR 而skimage的读取和存储格式是RGB 1 读取图片 skimage读取图片 img s
  • The deduced formulas of Conv1d and ConvTranspose1d

    torch nn Conv1d in channels out channels kernel size stride 1 padding 0 dilation 1 groups 1 bias True In the simplest ca
  • 基于树莓派的python界面开发实例教程

    基于树莓派的python界面开发实例教程 环境测试 添加label实例 时钟程序 添加天气 环境测试 点击树莓派的开始菜单 找到programming Python3 IDLE 点击打开 打开后如下 在home pi下面建立home pi
  • UNIX网络编程卷一 学习笔记 第十七章 ioctl操作

    ioctl函数传统上一直作为那些不适合归入现有已定义的类别的系统接口 POSIX正在通过创建特定的包装函数来代替ioctl函数的某些功能 以取而代之的是那些已被POSIX标准化的函数 例如 Unix终端接口传统上使用ioctl函数访问 而P
  • 测试工程师需要具备哪些技能

    测试工程师需要具备以下几项技能 软件测试方法和技巧 测试工程师需要了解不同的测试方法 如黑盒测试 白盒测试 回归测试等 编程能力 有些测试工程师需要编写自动化测试脚本 因此需要具备一定的编程技能 问题诊断能力 测试工程师需要能够识别和定位软
  • 【leetcode刷题】27、移除元素(C++)

    27 移除元素 原题地址 https leetcode cn problems remove element 给你一个数组 nums 和一个值 val 你需要 原地 移除所有数值等于 val 的元素 并返回移除后数组的新长度 不要使用额外的
  • 华为OD2023(A卷)基础题34【新词挖掘】

    知识图谱新词挖掘 题目描述 小华负责公司知识图谱产品 现在要通过新词挖掘完善知识图谱 新词挖掘 给出一个待挖掘文本内容字符串content和一个词的字符串word 找到content中所有word的新词 新词 使用词word的字符排列形成的
  • 使用HTMLTestRunner没有生成测试报告

    原因 没有执行 main函数中的程序 只执行了测试用例 在main函数上方右键运行的是整个py文件 在main函数下方右键运行的是py文件中的测试用例 如果在上方点击出现的和下方点击的一样需要在右上角设置并添加文件路径
  • element 限制文件上传类型

  • Golang依赖注入提升开发效率!

    导语 依赖注入并不是java独有的 也不是web框架独有的 本文用通俗易懂的语言讲解什么是依赖注入 为什么需要依赖注入 以及go语言如何使用依赖注入来提升开发效率 一 什么依赖注入 依赖注入 Dependency Injection 也叫D
  • C++拷贝构造、赋值构造详解

    一 前言 写一个用到指针的程序时 被拷贝 赋值 析构函数坑了一波 网上查相关博客 发现关于拷贝 赋值构造函数调用时机大多都有错误 因此决定自己总结撸一发博客 A A a 拷贝构造函数 A const A a 拷贝构造函数 A operato
  • 谈谈区块链入门技能(三):Layer 2区块链浏览器如何使用?Tokenview

    继介绍了比特币以及EVM系列区块链浏览器使用指南 今天我们再来 介绍一下Layer 2系列浏览器如何使用 Layer 1 是基础区块链 以太坊和比特币都是Layer1区块链因为它们是各种Layer2网络构建的底层基础 Layer2项目包括以
  • 第二个作业:贝叶斯估计

    第二个作业 贝叶斯估计实战 第一小题 试使用西瓜数据集3 0作为训练集 通过AIC准则构建一个贝叶斯网 我先看看scikit learn官网上关于贝叶斯估计 特别是贝叶斯网的构建方面的包和函数 然后再看看这个AIC准则具体是怎么样的 如何构