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

第一小题:试使用西瓜数据集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准则构造合适的贝叶斯网络

第二个作业:贝叶斯估计相关推荐

  1. 丁贵才130702010042第二次作业

    第二次作业 2.9 设有如下语句,请用相应的谓词公式分别把它们表示出来: (1)有的人喜欢梅花,有的人喜欢菊花,有的人既喜欢梅花有喜欢梅花. 解:定义谓词 P(x):x是人 L(x,y):x喜欢y y ...

  2. 20189317 《网络攻防技术》 第二周作业

    一.黑客信息 (1)国外黑客 1971年,卡普尔从耶鲁大学毕业.在校期间,他专修心理学.语言学以及计算机学科.也就是在这时他开始对计算机萌生兴趣.他继续到研究生院深造.20世纪60年代,退学是许多人的 ...

  3. mysql 三阶多项式拟合_2014年9月份考试机械CAD_CAM第二次作业

    2014年9月份考试机械CAD/CAM第二次作业 一.单项选择题(本大题共40分,共 20 小题,每小题 2 分) 1. 在CAD作业中,采用数据文件形式来处理工程数表.线图数据,其目的是() A. ...

  4. 2021年春季学期-信号与系统-第二次作业参考答案-第十小题

    本文是 2021年春季学期-信号与系统-第二次作业参考答案 的参考答案. ▌第十题 10 从网络学堂下载代表两个信号的音频文件: 音频文件: f1(t)f_1 \left( t \right)f1​( ...

  5. 2021年春季学期-信号与系统-第二次作业参考答案-第九小题

    本文是 2021年春季学期-信号与系统-第二次作业参考答案 的参考答案. ▌第九题 9. 已知三个系统的输入输出关系分别为: 把上述三个子系统进行如下的级联,求系统的输入输出关系,它是线性.时不变系统 ...

  6. 2021年春季学期-信号与系统-第二次作业参考答案-第八小题

    本文是 2021年春季学期-信号与系统-第二次作业参考答案 的参考答案. ▌第八题 8. 判断下列系统是否为线性.时不变.因果? (1)第一小题 r(t)=ddte(t)r\left( t \righ ...

  7. 2021年春季学期-信号与系统-第二次作业参考答案-第七小题

    本文是 2021年春季学期-信号与系统-第二次作业参考答案 的参考答案. ▌第七题 7. 判断下列系统是否可逆.若可逆,给出它的逆系统:若不可逆,指出使该系统产生相同输出的两个输入信号. 判断系统是否 ...

  8. 2021年春季学期-信号与系统-第二次作业参考答案-第六小题

    本文是 2021年春季学期-信号与系统-第二次作业参考答案 的参考答案. ▌第六题 6. 有一线性时不变系统, 当激励e1(t)=u(t)e_1 \left( t \right) = u\left( ...

  9. 2021年春季学期-信号与系统-第二次作业参考答案-第五小题

    本文是 2021年春季学期-信号与系统-第二次作业参考答案 的参考答案. ▌第五题 5. Consider a LTI systems whose response to the singal x1( ...

最新文章

  1. Docker安装部署RabbitMQ
  2. 093_Element.getBoundingClientRect()方法和DOMRect对象
  3. dbEntry.net CK.K的高级应用
  4. oracle 得到一个树,Related to Oracle SQL 关于树形数据的遍历
  5. MySQL为其他用户创建数据库_MYSQL添加新用户 MYSQL为用户创建数据库 MYSQL为新用户分配权限...
  6. mysql 中eq_表达式中的运算符EQ NE GT GE LT LE…..
  7. Windows 服务(附服务开发辅助工具)
  8. Arrays.sort与Arrays.parallelSort
  9. Python基础闯关失败总结
  10. redis常用集群方案汇总
  11. angular将html导出为pdf,如何使用Angular进行转换:将HTML转换为PDF
  12. view-controller标签
  13. swagger入门和实践(含docker部署swagger)
  14. lisp princ详解_LISP教程
  15. 小米手机qq不读取相册照片_小米手机qq保存的图片找不到
  16. Java中利用freemarker导出word表格并合并单元格
  17. 【GBASE培训】GBase数据库2022年第6期培训圆满结束
  18. Autodesk Alias AutoStudio 2022.1 x64
  19. iPad,iPad Pro和iPad Mini有什么区别?
  20. 正确打开/解读Logit模型系数的方式——离散选择模型之四

热门文章

  1. 【数据分析】数据分析方法(三):PEST 分析方法
  2. 百人计划 图形 2.5 BUMP图改进
  3. closewait过多服务器无响应,CLOSE_WAIT连接过多的现象分析与处理
  4. [转]一位HR对应届毕业生的不满[招聘|应聘]
  5. lua语言入门学习(二)lua语言的特点及注意事项
  6. SnagIt 7.1.2
  7. 什么是http无状态?怎么解决的?
  8. HTML-CSS-JavaScript综合
  9. Python按关键字提取txt文本并保存到Excel
  10. Linux内存管理图解