朴素贝叶斯学习记录2

本文主要根据西瓜书的朴素贝叶斯公式推导以及例题解答为基础进行学习。
该全过程主要解决了以下几个问题:

  1. 朴素贝叶斯的数学表达式是如何求得
  2. 朴素贝叶斯与贝叶斯的差别在哪里
  3. 朴素贝叶斯的实例问题解决
  4. 拉普拉斯平滑的提出与应用实例解决
  5. 朴素贝叶斯手推代码




朴素贝叶斯手写代码过程

import numpy as np
import pandas as pd
data=pd.read_csv("D:/大三上课程资料/机器学习/数据集/西瓜书朴素贝叶斯数据集.csv",header=None,encoding='gb2312')
lemon1=np.array(data)
data=lemon1.tolist()
data
def set_data():data=pd.read_csv("D:/大三上课程资料/机器学习/数据集/西瓜书朴素贝叶斯数据集.csv", header=None, encoding='gb2312')lemon1=np.array(data)data=lemon1.tolist()property_list = ['青绿', '乌黑', '浅白','蜷缩', '稍缩', '硬挺','浊响', '沉闷', '清脆','清晰', '稍糊', '模糊','凹陷', '稍陷', '稍凹','硬滑', '软粘']return data,property_list
def get_data(data,col,row,n):N=[0]*nfor n in range(0,n):N[n]=float(data[row+n][col])return N
x=np.mean(get_data(data,6,0,5))
property_list = ['青绿', '乌黑', '浅白','蜷缩', '稍缩', '硬挺','浊响', '沉闷', '清脆','清晰', '稍糊', '模糊','凹陷', '稍陷', '稍凹','硬滑', '软粘']
index=property_list.index('软粘')```python
def train(data,property_list):train_len=len(data)goodmelon=0for sample in data:if sample=='是':goodmelon+=1P_C_good=goodmelon/train_lenPX_C_Positive=[]PX_C_Negative=[]for property in property_list:if(property=="硬滑")or (property=="软粘"):Sample_P=goodmelon+2Sample_N=train_len-goodmelon+2else:Sample_P=goodmelon+3Sample_N=train_len-goodmelon+3Pos_Num=1Neg_Num=1for row in range(0,len(data)):if property in data[row]:if data[row][-1]=='是':Pos_Num+=1else:Neg_Num+=1PX_C_Positive.append(Pos_Num/Sample_P)PX_C_Negative.append(Neg_Num/Sample_N)PX_C_Positive.append(np.mean(get_data(data,6,0,goodmelon)))PX_C_Positive.append(np.var(get_data(data,6,0,goodmelon))**(1/2))PX_C_Negative.append(np.mean(get_data(data,6,goodmelon,train_len-goodmelon)))PX_C_Negative.append(np.var(get_data(data,6,goodmelon,train_len-goodmelon)))PX_C_Positive.append(np.mean(get_data(data,7,0,goodmelon)))PX_C_Positive.append(np.var(get_data(data,7,0,goodmelon)))PX_C_Negative.append(np.mean(get_data(data,7,goodmelon,train_len-goodmelon)))PX_C_Negative.append(np.var(get_data(data,7,goodmelon,train_len-goodmelon)))return PX_C_Positive,PX_C_Negative
def forecast(data,PX_C_Positive,property_list,PX_C_Negative):forca_Pos=0forca_Neg=0for property_data in data[:-1]:if property_data in property_list:index=property_list.index(property_data)forca_Pos+=np.log(PX_C_Pos[index])forca_Pos+=np.log(PX_C_Neg[index])forca_Pos+=np.log(((2 * np.pi) ** (-1 / 2) * PX_C_Pos[-4]) ** (-1)) + (-1 / 2) * ((float(data[-2]) - PX_C_Pos[-4]) ** 2) / (PX_C_Pos[-3] ** 2)forca_Pos+=np.log(((2 * np.pi) ** (-1 / 2) * PX_C_Pos[-2]) ** (-1)) + (-1 / 2) * ((float(data[-1]) - PX_C_Pos[-2]) ** 2) / (PX_C_Pos[-1] ** 2)forca_Neg+=np.log(((2 * np.pi) ** (-1 / 2) * PX_C_Pos[-4]) ** (-1)) + (-1 / 2) * ((float(data[-2]) - PX_C_Pos[-4]) ** 2) / (PX_C_Pos[-3] ** 2)forca_Neg+=np.log(((2 * np.pi) ** (-1 / 2) * PX_C_Pos[-2]) ** (-1)) + (-1 / 2) * ((float(data[-1]) - PX_C_Pos[-2]) ** 2) / (PX_C_Pos[-1] ** 2)if PX_C_Positive>PX_C_Negative:return '是'else:return '否'
if __name__ == "__main__":data,property_list=set_data()PX_C_Positive,PX_C_Negative=train(data,property_list)
data = ['青绿', '硬挺', '清脆', '清晰', '平坦', '软粘', '0.243', '0.267']
result = forecast(data, PX_C_Positive, property_list,PX_C_Negative)
print('该数据是否为正样例:',result)

结果预测:

【朴素贝叶斯学习记录】西瓜书数据集朴素贝叶斯实现相关推荐

  1. 【机器学习】聚类学习笔记+西瓜书数据集K-means实现

    聚类 聚类的提出 聚类的是目标通过对无标记训练样本的学习来揭示数据内部潜在性质及规律. 在机器学习中有: 监督学习 无监督学习 强化学习 聚类则属于无监督学习,挖掘数据之间的隐含特征,其作为其他学习任 ...

  2. 西瓜书笔记7:贝叶斯分类器

    目录 相关概率知识 贝叶斯-全概率公式 先验概率.后验概率.似然概率 7.1 贝叶斯决策论 7.2 极大似然估计 极大似然估计公式 均值方差估计公式推导 概率知识复习 高斯分布 最大似然估计 7.3 ...

  3. 机器学习学习笔记-西瓜书

    #西瓜书笔记 文章目录 模型评估和选择 线性模型 决策树 神经网络 支持向量机 贝叶斯分类 集成学习 聚类 性能度量与距离计算 原型聚类 密度聚类 层次聚类 降维与度量学习 特征选择与稀疏学习 计算学 ...

  4. 霍夫丁不等式(Hoeffding‘s inequality)-集成学习拓展-西瓜书式8.3

    本文参考书目: 书名:机器学习中的数学修炼 作者:左飞 1.引入 假设有一个罐子,其中装有绿色和橘色两种颜色的小球.其中橘色小球所占比例u未知,为了推测这个未知的u,可以从罐子里面随机抽取一组样本,在 ...

  5. 集成学习(西瓜书学习)

    集成学习 概述 一.Boosting 1.Boosting 2.GBDT (Gradient Boosting Decision Tree) 3.XGBoost(Extreme Gradient Bo ...

  6. 交叉学习验证 西瓜书_机器学习:数据划分与交叉验证

    函数1:train_test_split from sklearn.model_selection import train_test_split # 数据划分所需的函数X_train, X_test ...

  7. 西瓜书 数据集3.0α

    编号,密度,含糖率,好瓜 1,0.697,0.46,是 2,0.774,0.376,是 3,0.634,0.264,是 4,0.608,0.318,是 5,0.556,0.215,是 6,0.403, ...

  8. python程序员买西瓜代码_朴素贝叶斯python代码实现(西瓜书)

    本文将要为您介绍的是朴素贝叶斯python代码实现(西瓜书),具体完成步骤:朴素贝叶斯python代码实现(西瓜书) 摘要: 朴素贝叶斯也是机器学习中一种非常常见的分类方法,对于二分类问题,并且数据集 ...

  9. 贝叶斯学习的简单介绍

    文章目录 贝叶斯学习 Bayesian Learning 一.介绍 1.1 先验概率 1.2 后验概率 二.贝叶斯理论 2.1 举例介绍 2.2 MAP假设 2.3 概率法则 三.最小描述长度假设 四 ...

最新文章

  1. 空间里相片批量导入u盘_国民好物:aigo手机U盘 开启存储新时代
  2. 2019全球AI争夺战最新汇总
  3. 漫画:程序员太难了!为什么 Java 中的 main 方法必须是它?
  4. insta经典滤镜下载
  5. Java开发:(执行系统(例cmd)命令)Runtime.getRuntime().exec()参数解释
  6. linux内核启动后门,Linux下编写隐蔽的自启动回连后门
  7. Unable to locate Attribute with the the given name [] on this ManagedType[com.XXX]
  8. Spark中导入jfree
  9. Flutter Container 容器以及对齐方式 Alignment
  10. Java 中的细节补充
  11. C语言课后习题(20)
  12. OpenCV笔记:pyrDown()函数和pryUp()函数的使用
  13. ScheduledThreadPoolExecutor之scheduleWithFixedDelay和scheduleAtFixedRate的区别
  14. 计算机鼠标能用键盘不能用,电脑键盘鼠标都不能用了,怎么回事?
  15. ARM架构下常用GNU汇编程序伪指令介绍(Assembler Directive)
  16. Hive集合数据类型(STRUCK,MAP,ARRAY)
  17. 如何写好一份前端简历
  18. 达内python培训好不好
  19. 模态对话框和非模态对话框和dlg.DoModal();
  20. 思科网络搭建综合实训1

热门文章

  1. 进入1TB大容量时代 创见SSD370固态硬盘试用
  2. Lifelong GAN: Continual Learning for Conditional Image Generation
  3. Simulator 定位设置 TouchID/FaceID模拟
  4. 中航光电lrm_我国集成电路进口额突破三千亿美元;ofo两位联合创始人退出
  5. 网易关于区块链的发展历程
  6. python教学课件PPT Java教学课件ppt以及代码
  7. 横向思维-六顶思考帽
  8. CorelDRAW中如何输入上角标和下角标
  9. Iptv机顶盒之epg界面h5开发注意事项
  10. postman汉化教程(历史老版本)