python实现贝叶斯分类器_python实现简单的朴素贝叶斯分类器

本文使用的测试问题是“皮马印第安人糖尿病问题”

这个问题包括768个对于皮马印第安患者的医疗观测细节,记录所描述的瞬时测量取自患者的年龄,怀孕

和血液检查的次数。所有患者都是21岁以上的女性,所有属性都是数值型,而且属性的单位各不相同

每一个记录归属一个类,最后一列为类标签,表示患者是否在5年之内感染的糖尿病。

如果是,则为1,否则为0

下面是文件的地址,以.csv扩展名保存

第一次写,如有不足,请多多包涵

# -*- coding: utf-8 -*-

"""

Created on Wed Mar 29 10:49:47 2017

@author: Administrator

"""

import csv

import numpy as np

import math

#处理数据

data_name='data.csv'

np.random.seed(2017)

#训练集:80% 测试集:20%

def splitData(filename):

testSets=[]

trainSets=[]

lines=list(csv.reader(open(filename,'r')))

for line in lines:

p=np.random.randint(100)

if p<20:

testSets.append(line)

else:

trainSets.append(line)

return trainSets,testSets

trainSets,testSets=splitData(data_name)

#分为特征和类别

def fea_and_class(trs,tes):

tr_feas0=[]

tr_feas1=[]

tr_dict={}

te_feas0=[]

te_feas1=[]

te_dict={}

for tr in trs:

tr_fea=[float(x) for x in tr[:8]]

tr_cl=int(tr[-1])

if tr_cl==0:

#tr_dict[tr_cl]=tr_fea

tr_feas0.append(tr_fea)

if tr_cl==1:

tr_feas1.append(tr_fea)

tr_dict[0]=tr_feas0

tr_dict[1]=tr_feas1

for te in tes:

te_fea=[float(x) for x in te[:8]] #前八个为特征,最后一个为类别标签

te_cl=int(te[-1])

#te_dict[te_cl]=te_fea

if te_cl==0:

te_feas0.append(te_fea)

if te_cl==1:

te_feas1.append(te_fea)

te_dict[0]=te_feas0

te_dict[1]=te_feas1

return tr_dict,te_dict

#return tr_dict,te_dict

tr_dict,te_dict=fea_and_class(trainSets,testSets)

#提取训练集的属性特征

'''

trDict={}

tr=[]

te=[]

for i in range(len(tr_class)):

if tr_class[i][0]==0:

tr.append(trSets[i])

if tr_class[i][0]==1:

te.append(trSets[i])

trDict[0]=tr

trDict[1]=te

'''

#训练集的同一类的均值,方差

tr_mean0=np.mean(tr_dict[0],axis=0)

tr_var0=np.var(tr_dict[0],axis=0)

tr_mean1=np.mean(tr_dict[1],axis=0)

tr_var1=np.var(tr_dict[1],axis=0)

#假设数据服从高斯分布

def gaussian(x,mu,sigma):

val=1/math.sqrt(2*math.pi*sigma)

return val*(math.exp((-(x-mu)**2)/(2*sigma)))

#values=gaussian(10.0,tr_mean0[0],tr_var0[0])

pre_cla0=[]

pre_cla1=[]

#对于测试集,判断其属于哪些类,并计算准确率,假设特征独立同分布

for te0 in te_dict[0]:

val0=1

val1=1

for i in range(len(te0)):

val0=gaussian(te0[i],tr_mean0[i],tr_var0[i])

val0*=val0

val1=gaussian(te0[i],tr_mean1[i],tr_var1[i])

val1*=val1

if val0>val1:

classes=0

else:

classes=1

pre_cla0.append(classes)

for te1 in te_dict[1]:

val0_=1

val1_=1

for i in range(len(te1)):

val0_=gaussian(te1[i],tr_mean0[i],tr_var0[i])

val0_*=val0_

val1_=gaussian(te1[i],tr_mean1[i],tr_var1[i])

val1_*=val1_

if val0_>val1_:

classes=0

else:

classes=1

pre_cla1.append(classes)

count=0

for pre_cla0_each in pre_cla0:

if pre_cla0_each==0:

count+=1

for pre_cla1_each in pre_cla1:

if pre_cla1_each==1:

count+=1

acc=count/(len(pre_cla0)+len(pre_cla1))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/370301.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VC++编译MPIR 2.7.0

目录 第1章编译 2 1.1 简介 2 1.2 下载 3 1.3 解决方案 4 1.4 创建项目 5 1.5 复制文件树 6 1.6 不使用预编译头文件 8 1.7 包含目录 9 1.8 定义宏 10 1.9 编译前事件 11 1.10 修改 obj 的位置 13 1.11 编译yasm 14 1.12 编译汇编代码 …

PHP大数据处理【转】

1&#xff1a;硬件方面 普通的一个p4的服务器每天最多能支持大约10万左右的IP&#xff0c;如果访问量超过10W那么需要专用的服务器才能解决&#xff0c;如果硬件不给力 软件怎么优化都是于事无补的。主要影响服务器的速度 有&#xff1a;网络-硬盘读写速度-内存大小-cpu处理速度…

http1.X与2.0

HTTP HTTP 1.X HTTP是建立在TCP协议上的&#xff0c;HTTP协议的瓶颈及优化都是基于TCP协议本身的特性。TCP建立连接时有三次握手 会有1.5RTT的延迟&#xff0c;为了避免每次请求都经历握手待来的延迟&#xff0c;应用层会选择不同策略的http长连接。 HTTP 1.0 连接不能复用以…

php代码清除空格注解,去除php注释和去除空格函数分享

虽然php5中已有php_strip_whitespace方法可以返回删除注释和空格后的PHP源码的功能&#xff0c;为了学习&#xff0c;这里为大家提供一个自己的方法&#xff0c;也可以去除代码中的空白和注释&#xff0c;代码如下&#xff1a;. 代码如下:/*** 去除代码中的空白和注释* param s…

包装的重要性

我记得大约15年前开始学习Java的时候。 我读了很多有关“包装”和“命名空间”的东西&#xff0c;但我完全不了解。 可悲的是&#xff1a;虽然包装的某些方面几乎为业内每个人所了解&#xff0c;但其他方面却并非如此。 因此&#xff0c;让我们看一下哪些软件包最适合。 命名空…

我的python学习笔记全集_我的python学习笔记

(此文是在实际工程中遇到的一些小问题&#xff0c;给予解决和整理。解决方法大多来自网上零散的文章。)1——如下代码&#xff0c;a[1,2,3]bab也是[1,2,3]了&#xff0c;接着a[0]4a[1]5a[2]6此时a变成[4,5,6]了&#xff0c;再看b&#xff0c;a变了之后没有对b进行新的引用&…

课时28.假链接(掌握)

什么是假链接&#xff1f; 就是点击之后不会跳转的链接我们称之为假链接。 假链接存在的意义&#xff1f; 在企业开发前期&#xff0c;其他界面都没有写出来&#xff0c;那么&#xff0c;我们就不知道应该跳转到什么地方&#xff0c;所以就只能使用假链接来代替&#xff0c;…

笔记45 | 代码性能优化建议[转]

地址 笔记45 | 代码性能优化建议[转] 目录 前言避免创建不必要的对象选择Static而不是Virtual常量声明为Static Final避免内部的Getters/Setters使用增强的For循环使用包级访问而不是内部类的私有访问避免使用float类型使用库函数谨慎使用native函数关于性能的误区前言 通常来说…

导弹拦截

链接 分析&#xff1a;经典DP题&#xff0c;最长不下降子序列的变种&#xff0c;同时需要记录路径&#xff0c;用pre[]数组记录当前结点的前一个结点的方法很妙 1 #include "iostream"2 #include "cstdio"3 #include "cstring"4 #include "…

JUnit4参数化和理论示例

我始终依靠TestNG将参数传递给测试方法&#xff0c;以便为我的测试或套件提供一些灵活性。 但是&#xff0c;使用JUnit4可以实现相同的灵活性。 要使用它很简单&#xff1a; package com.marco.test;import java.util.Arrays;import java.util.Collection;import junit.fram…

杨杰matlab神经网络30例,MATLAB神经网络30例

实例1 BP神经网络在非线性函数拟合中的应用11.1 理论基础11.1.1 BP网络概述11.1.2 BP神经网络的MATLAB函数21.2 非线性函数拟合方法6实例2 主元BP神经网络在股票价格预测中的应用122.1 理论基础122.1.1 主成分分析的原理122.1.2 主元神经网络与股票预测142.2 股票价格的预测方法…

HTMLCSS 问题

1.子div使用浮动&#xff0c;父div高度自适应(个人感觉好用) 方法&#xff1a; css: <style> .clear{ clear:both} </style> html&#xff1a;在父div关闭之前添加<div class"clear"></div> 本文转载于:猿2048⇛https://www.mk2048.com/…

python matplotlib数据可视化教程_matplotlib的Python数据可视化和探索——入门指南

matplotlib——最受欢迎的Python库&#xff0c;用于数据可视化和探索我喜欢在Python中使用matplotlib。这是我学会掌握的第一个可视化库&#xff0c;此后一直存在。matplotlib是最受欢迎的用于数据可视化和探索的Python库&#xff0c;这是有原因的——它提供的灵活性和敏捷性是…

mysql 查询所有子节点的相关数据

定义一个函数 CREATE DEFINERrootlocalhost FUNCTION getColumnChildLst(rootId INT) RETURNS varchar(1000) CHARSET utf8 BEGINDECLARE sTemp VARCHAR(1000);DECLARE sTempChd VARCHAR(1000);SET sTemp $;SET sTempChd cast(rootId as CHAR);WHILE sTempChd is not null DOS…

怎么用PHP实现年月日date,PHP date函数用法,php年月日写法

日期和时间信息在 PHP 内部是以 64 位数字存储的&#xff0c; 它可以覆盖当前时间前后 2920 亿年的时间&#xff0c;这个范围之广&#xff0c;足以满足现有应用的实际需求。需要注意的是&#xff0c; 这些PHP时间函数都是依赖服务器的区域设置的&#xff0c; 所以在使用它们的时…

python气象卫星云图解析_【我教你系列】想要实时的地球图像作为桌面?

Python 定时获取卫星图像做为桌面背景简介这两天看新闻的时候&#xff0c;突然发现最近有个台风产生&#xff0c;并且在不断的增强中。幸运的是从中央气象台预报的路径来看&#xff0c;不会登陆我国。也正是通过这则新闻&#xff0c;我发现了一个不错的卫星云图网站。(ps:这篇文…

CSS权重的比较方法

CSS的权重如下&#xff1a; !important Infinity正无穷 行间样式 1000 id 100 class|属性|唯类 10 标签|伪元素 1 通配符 0 256进制 当出现多个选择器时 在同一行的选择器权重相加即可 当两个混合选择器权重相同时优先选择后面的选择器 如&#xff1a; html <…

python_day8 面向对象常用 补充

__str__ 作用本来 打印 类对象是 打印的内存地址 但是在类中 增加 __str__ 参数 以后 再打印这个 类对象 就是显示 __str__中的 return __del__作用 当 实例化的对象 在内存中 被释放的时候执行 item操作通过 set get del 操作 item最终目的是将 类里面的 变量 像 字典一样操作…

Spring中的@Cacheable开销

Spring 3.1引入了很棒的缓存抽象层 。 最后&#xff0c;我们可以放弃所有本地化的方面&#xff0c;装饰器和污染我们与缓存相关的业务逻辑的代码。 从那时起&#xff0c;我们可以简单地注释重量级方法&#xff0c;并让Spring和AOP机械完成工作&#xff1a; Cacheable("bo…

电工接线模拟仿真软件_VERICUT数控加工仿真软件,最强的数控加工模拟软件,你知道么?...

VERICUT数控加工仿真软件,最强的数控加工模拟软件VERICUT软件及功能简介1、VERICUT软件简介VERICUT是美国CGTech公司开发一款专业的数控加工仿真软件&#xff0c;是当前全球数控加工程序验证、机床模拟、工艺程序优化软件领域的领导者。该软件自1988年开始推向市场以来&#xf…