python实现一个朴素贝叶斯分类器

本文介绍了作者在工作中实现的一个朴素贝叶斯分类器,采用拉普拉斯平滑处理未出现的属性,防止概率为零导致的计算问题。代码实现详细,适用于实际项目。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因工作中需要,自己写了一个朴素贝叶斯分类器。

对于未出现的属性,采取了拉普拉斯平滑,避免未出现的属性的概率为零导致整个条件概率都为零的情况出现。

朴素贝叶斯的基本原理网上很容易查到,这里不再叙述,直接附上代码


因工作中需要,自己写了一个朴素贝叶斯分类器。对于未出现的属性,采取了拉普拉斯平滑,避免未出现的属性的概率为零导致整个条件概率都为零的情况出现。



class NBClassify(object):

	def __init__(self, fillNa = 1):

		self.fillNa = 1
		pass

	def train(self, trainSet):

		# 计算每种类别的概率
		# 保存所有tag的所有种类,及它们出现的频次
		dictTag = {}

		for subTuple in trainSet:
			dictTag[str(subTuple[1])] = 1 if str(subTuple[1]) not in dictTag.keys() else dictTag[str(subTuple[1])] + 1

		# 保存每个tag本身的概率
		tagProbablity = {}

		totalFreq = sum([value for value in dictTag.values()])
		
		for key, value in dictTag.items():
			tagProbablity[key] = value / totalFreq
		# print(tagProbablity)

		self.tagProbablity = tagProbablity
		##############################################
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值