贝叶斯算法及其应用案例

贝叶斯分类算法:
贝叶斯分类是统计学的一种分类算法,它是一类利用概率统计知识进行分类的算法。在许多场合,朴素贝叶斯(Naïve Bayes,NB)分类算法可以与决策树和神经网络分类算法相媲美。
缺陷:
与其本身的设定有关,由于贝叶斯假设一个属性值对给定类的影响独立于其它属性的值,但是该假设在实际情况中经常是不成立的,因此其分类准确率可能会下降。升级版:降低独立性假设的贝叶斯分类算法,如TAN(tree augmented Bayes network)算法。
朴素贝叶斯分类的正式定义如下:
1.设 x={a1,a2,…,am}为一个待分类项,而每个 a 为 x 的一个特征属性。
2.有类别集合 C={y1,y2,…,yn}。
3.计算 P( y1|x) ,P( y2|x),…, P( yn|x)。
4.如果 P( yk|x) =max{P( y1|x),P( y2|x),…, P( yn|x)},则 x∈yk。
贝叶斯算法如下:

#贝叶斯算法实现
#建立一个类
import numpy as np
class Bayes:
    def _init_(self):
        self.length=-1
        self.labelcount=dict()
        self.vectorcount=dict()
    def fit(self,dataSet:list,labels:list):
        if(len(dataSet)!=len(labels)):
            raise ValueError("您输入的测试数组跟类别数组长度不一致")
        self.length=len(dataSet[0]) 
        #测试数据特征值的长度
        labelsnum=len(labels)   
        #类别所有的数量
        norlabels=set(labels) 
        #不重复类别的数量
        for item in norlabels:
            thislabel=item
            labelcount[thislabel]=labels.count(thislabel)/labelsnum  
            #当前类别占总类别的比例
        for vector,label in zip(dataSet,labels):   
        #将两变量整合到一起
            if(label not in vectorcount):
                self.vectorcount[label]=[]
            self.vectorcount[label].append(vector)
        print("训练结束")
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值