zoukankan      html  css  js  c++  java
  • 朴素贝叶斯(naive bayes)

    #coding=utf-8

    #Naive Bayes

    #Calculate the Prob. of class:cls
    def 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 NB
    def 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"))

  • 相关阅读:
    HttpWatch 有火狐版本?
    JQgrid的最新API
    jqgrid
    JSON的学习网站
    array创建数组
    Numpy安装及测试
    SQLite3删除数据_7
    SQLite3修改数据_6
    SQLite3查询一条数据_5
    SQLite3查询所有数据_4
  • 原文地址:https://www.cnblogs.com/onemorepoint/p/6765080.html
Copyright © 2011-2022 走看看