朴素贝叶斯分类算法Python代码

该博客介绍了如何使用Python实现朴素贝叶斯分类算法。通过定义一个Bayes类,包含训练和测试方法,用于计算各类别的概率并进行分类。在训练过程中,计算每个类别出现的频率,并假设特征之间相互独立。测试阶段则根据训练得到的概率进行分类。
摘要由CSDN通过智能技术生成

贝叶斯分类器就是求P(C|F1F2...Fn) = P(F1F2...Fn|C)P(C) / P(F1F2...Fn) 最大值,由于 P(F1F2...Fn) 对于所有的类别都是相同的,可以省略,问题就变成了求 P(F1F2...Fn|C)P(C) 的最大值。 

朴素贝叶斯分类器则是更进一步,假设所有特征都彼此独立,因此P(F1F2...Fn|C)P(C)= P(F1|C)P(F2|C) ... P(Fn|C)P(C)

朴素贝叶斯算法进行分类,是根据朴素贝叶斯公式分别计算测试数据为类别0,类别1,类别2...的概率,假如计算得出类别i概率高,就可以说测试数据属于类别i的概率最大,把测试数据归到类别i,达到分类的目的。

封装在类里,方便以后使用。

import numpy
class Bayes: 
    def __init__(self):      
        self.length=-1   #用来判断是否训练过    
        self.labelcount=dict()  #字典类型{label:频数...}  
        self.vectorcount=dict() #字典类型{label:vector...}
    #训练数据
    #dataset是二维列表,格式[[],[]...],每一行是属于某一个label,labels是一维列表
    def fit(self,dataset:list,labels:list):       
        if(len(dataset)!=len(labels)):            
            raise ValueError("输入数组与类别数组长度不同")       
        #训练数据特征值长度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值