朴素贝叶斯及西瓜书实例

https://www.jianshu.com/p/5953923f43f0
线性分类–>软输出–>概率生成模型–>朴素贝叶斯
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是朴素贝叶斯分类器的一个简单实例及代码: 假设我们有一个数据集,其中包含以下数据: | 文本 | 分类 | | ---------------------------------------- | ---- | | Chinese Beijing Chinese | 中国 | | Chinese Chinese Shanghai | 中国 | | Chinese Macao | 中国 | | Tokyo Japan Chinese | 日本 | 我们要使用朴素贝叶斯分类器来对新的文本进行分类。 首先,我们需要对数据进行预处理,将文本转换为单词列表: ``` data = [ ['Chinese', 'Beijing', 'Chinese', '中国'], ['Chinese', 'Chinese', 'Shanghai', '中国'], ['Chinese', 'Macao', '中国'], ['Tokyo', 'Japan', 'Chinese', '日本'] ] ``` 然后,我们需要计算出每个类别及每个单词在每个类别中出现的概率。这里我们使用 Laplace 平滑来避免概率为 0 的情况: ``` class_prob = {} word_prob = {} # 计算类别概率 for row in data: cls = row[-1] class_prob[cls] = class_prob.get(cls, 0) + 1 total = len(data) for cls, count in class_prob.items(): class_prob[cls] = (count + 1) / (total + len(class_prob)) # 计算单词概率 for row in data: cls = row[-1] for word in row[:-1]: word_prob.setdefault(word, {}) word_prob[word][cls] = word_prob[word].get(cls, 0) + 1 for word, cls_prob in word_prob.items(): total = sum(cls_prob.values()) for cls, count in cls_prob.items(): cls_prob[cls] = (count + 1) / (total + len(word_prob)) ``` 现在我们可以使用这些概率来对新的文本进行分类。假设我们要对以下文本进行分类: ``` text = 'Chinese Chinese Chinese Tokyo Japan' ``` 我们需要计算出该文本属于每个类别的概率,然后选择概率最大的类别作为分类结果: ``` import math tokens = text.split() scores = {} for cls, cls_prob in class_prob.items(): scores[cls] = math.log(cls_prob) for word in tokens: word_cls_prob = word_prob.get(word, {}).get(cls, 1e-10) scores[cls] += math.log(word_cls_prob) result = max(scores, key=scores.get) print(result) ``` 以上就是一个简单的朴素贝叶斯分类器实例及代码。注意,这只是一个简单的示例,实际应用中还需要进行更多的优化和调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值