资源简介
西瓜书上第七章朴素贝叶斯采用拉普拉斯修正,简单易懂,关键代码都有注释,适合初学者的理解
代码片段和文件信息
import numpy as np
def load_data(filepath):
‘‘‘
:arg filepath filepath是数据的路径
:fun 加载数据:1青绿蜷缩浊响清晰凹陷硬滑0.6970.46是
:return 加载后的数据
‘‘‘
file_object = open(filepath encoding=‘UTF-8‘)
train_data = []
file_object.readline()
while 1:
data = file_object.readline()
if not data:
break
else:
train_data.append(data)
file_object.close()
test = []
for s in train_data:
test.append(s.replace(‘\n‘ ‘‘).split(‘‘)) # 去掉\n和把数据按照’‘分割再存
return test
def count_labels(data):
‘‘‘
:param data:数据集
:return: 返回好瓜和坏瓜的数目
‘‘‘
yes = 0
no = 0
for s in range(data.__len__()):
if data[s][-1] == ‘是‘:
yes += 1
else:
no += 1
return yes no
def handle_one_data(data attr location yes no attr_dis):
‘‘‘
:param data: 数据集
:param attr: 要传入的属性
:param location: 传入属性的位置
:param yes: 好瓜数量
:param no: 坏瓜数量
:param attr_dis: 各个属性的取值不同的个数
:return: 返回该属性在好瓜或者是坏瓜的前提下的概率
‘‘‘
attr_y attr_n = 0 0
for s in range(data.__len__()):
if data[s][-1] == ‘是‘:
if data[s][location] == attr:
attr_y += 1
else:
if data[s][location] == attr:
attr_n += 1
return (attr_y + 1) / (yes + attr_dis[location-1]) (attr_n + 1) / (no + attr_dis[location-1])
def handle_data(data):
‘‘‘
:param data: 数据集
:return: 对密度和含糖率的均值和标准差
‘‘‘
midu_y = []
tiandu_y = []
midu_n = []
tiandu_n = []
for s in range(data.__len__()):
if data[s][-1] == ‘是‘:
midu_y.append(np.float(data[s][-3]))
tiandu_y.append(np.float(data[s][-2]))
else:
midu_n.append(np.float(data[s][-3]))
tiandu_n.append(np.float(data[s][-2]))
m_midu_y = np.mean(midu_y)
m_midu_n = np.mean(midu_n)
t_tiandu_y = np.mean(tiandu_y)
t_tiandu_n = np.mean(tiandu_n)
std_midu_y = np.std(midu_y)
std_midu_n = np.std(midu_n)
std_tiandu_y = np.std(tiandu_y)
std_tiandu_n = np.std(tiandu_n)
return m_midu_y m_midu_n t_tiandu_y t_tiandu_n std_midu_y std_midu_n std_tiandu_y std_tiandu_n
def show_result(p_yes p_no):
‘‘‘
:param p_yes: 在好瓜的前提下,测试数据各个属性的概率
:param p_no: 在是坏瓜的前提下,测试数据的各个属性的概率
:return: 是好瓜或者是坏瓜
‘‘‘
p1 = 1.0
p2 = 1.0
for s in range(p_yes.__len__()):
p1 *= np.float(p_yes[s])
p2 *= np.float(p_no[s])
if p1 > p2:
print(“好瓜“ p1 p2)
else:
print(“坏瓜“ p1 p2)
def count_attr_dis(data):
‘‘‘
:param data: 数据集
:return: 各个属性取值的个数
‘‘‘
count = [] # 记录各个属性的取值有多少个不同
for i in range(data[0].__len__()):
if i == 0 or i == 7 or i == 8: # 去掉编号,密度,甜度这个属性
continue
d = []
for s in range(data.__len__())
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1114 2018-04-30 20:02 bayes.txt
文件 5245 2018-05-01 17:09 Bayes_laplacian.py
- 上一篇:学习cocos2d-x 3.0自己写的游戏2048
- 下一篇:平面转3d立体图片工具
相关资源
- 贝叶斯网络的参数学习研究贝叶斯网
- 机器学习西瓜分类贝叶斯算法详解
- 贝叶斯在信号检测中的应用
- 样本连续的朴素贝叶斯代码
- 贝叶斯优化LSSVM
- 简单贝叶斯实现垃圾邮件分类
- 基于WinBUGS软件的贝叶斯计量经济学
- 压缩感知稀疏贝叶斯算法
- 贝叶斯算法及历史的描述和介绍
- 一种基于多贝叶斯算法的垃圾邮件过
- 经典em算法代码不基于贝叶斯网络工具
- bp神经网络:贝叶斯、梯度下降算法
- k近邻算法和朴素贝叶斯算法课件
- 朴素贝叶斯分类器对西瓜数据3.0的应
- 基于属性加权的朴素贝叶斯分类算法
- 基于贝叶斯及KNN算法的newsgroup文本分
- 实验题目:基于Hadoop的并行贝叶斯分
- 基于朴素贝叶斯的垃圾邮件分类
- 通过Mahout构建贝叶斯文本分类器案例
- 17 机器学习案例——基于朴素贝叶斯
- 贝叶斯分类器实现手写数字识别
- 遥感图像的监督分类算法贝叶斯分类
- 朴素贝叶斯算法的邮件数据
- 模式识别实验贝叶斯分类器
- 如何使用FULLBNT工具箱(中文)
- 机器学习朴素贝叶斯垃圾邮件过滤器
- 利用K2算法学习贝叶斯网络结构
- 论文研究 - 减少大地电磁反演不确定
- 论文研究 - 基于不对称拉普拉斯分布
- L-M 优化算法和贝叶斯正则化算法训练
评论
共有 条评论