博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python学习---朴素贝叶斯算法的简单实现
阅读量:4330 次
发布时间:2019-06-06

本文共 2411 字,大约阅读时间需要 8 分钟。

前不久简单学习了python,写了一个朴素贝叶斯算法:

#coding=gbk#Naive Bayes #Calculate the Prob. of class:clsdef P(data,cls_val,cls_name="class"):    cnt = 0.0    for e in data:        if e[cls_name] == cls_val:            cnt += 1     return cnt/len(data) #Calculate the Prob(attr|cls)def PT(data,cls_val,attr_name,attr_val,cls_name="class"):    cnt1 = 0.0    cnt2 = 0.0    for e in data:        if e[cls_name] == cls_val:            cnt1 += 1            if e[attr_name] == attr_val:                cnt2 += 1     return cnt2/cnt1 #Calculate the NBdef NB(data,test,cls_y,cls_n):    PY = P(data,cls_y)    PN = P(data,cls_n)    for key,val in test.items():        print (key,val)        PY *= PT(data,cls_y,key,val)        PN *= PT(data,cls_n,key,val)    return {cls_y:PY,cls_n:PN}     if __name__ == "__main__":     #data    data = [        {
"outlook":"sunny", "temp":"hot", "humidity":"high", "wind":"weak", "class":"no" }, {
"outlook":"sunny", "temp":"hot", "humidity":"high", "wind":"strong", "class":"no" }, {
"outlook":"overcast", "temp":"hot", "humidity":"high", "wind":"weak", "class":"yes" }, {
"outlook":"rain", "temp":"mild", "humidity":"high", "wind":"weak", "class":"yes" }, {
"outlook":"rain", "temp":"cool", "humidity":"normal", "wind":"weak", "class":"yes" }, {
"outlook":"rain", "temp":"cool", "humidity":"normal", "wind":"strong", "class":"no" }, {
"outlook":"overcast", "temp":"cool", "humidity":"normal", "wind":"strong", "class":"yes" }, {
"outlook":"sunny", "temp":"mild", "humidity":"high", "wind":"weak", "class":"no" }, {
"outlook":"sunny", "temp":"cool", "humidity":"normal", "wind":"weak", "class":"yes" }, {
"outlook":"rain", "temp":"mild", "humidity":"normal", "wind":"weak", "class":"yes" }, {
"outlook":"sunny", "temp":"mild", "humidity":"normal", "wind":"strong", "class":"yes" }, {
"outlook":"overcast", "temp":"mild", "humidity":"high", "wind":"strong", "class":"yes" }, {
"outlook":"overcast", "temp":"hot", "humidity":"normal", "wind":"weak", "class":"yes" }, {
"outlook":"rain", "temp":"mild", "humidity":"high", "wind":"strong", "class":"no" }, ] #calculate print (NB(data,{
"outlook":"sunny","temp":"cool","humidity":"high","wind":"strong"},"yes","no"))

这是数据挖掘书本上的一个例子的运行结果:

 

转载于:https://www.cnblogs.com/joyho/articles/3527672.html

你可能感兴趣的文章
ethereum(以太坊)(二)--合约中属性和行为的访问权限
查看>>
IOS内存管理
查看>>
middle
查看>>
[Bzoj1009][HNOI2008]GT考试(动态规划)
查看>>
Blob(二进制)、byte[]、long、date之间的类型转换
查看>>
OO第一次总结博客
查看>>
day7
查看>>
iphone移动端踩坑
查看>>
vs无法加载项目
查看>>
Beanutils基本用法
查看>>
玉伯的一道课后题题解(关于 IEEE 754 双精度浮点型精度损失)
查看>>
《BI那点儿事》数据流转换——百分比抽样、行抽样
查看>>
哈希(1) hash的基本知识回顾
查看>>
Leetcode 6——ZigZag Conversion
查看>>
dockerfile_nginx+PHP+mongo数据库_完美搭建
查看>>
Http协议的学习
查看>>
【转】轻松记住大端小端的含义(附对大端和小端的解释)
查看>>
设计模式那点事读书笔记(3)----建造者模式
查看>>
ActiveMQ学习笔记(1)----初识ActiveMQ
查看>>
Java与算法之(2) - 快速排序
查看>>