Python实现朴素贝叶斯分类器
2015-05-26 17:07
561 查看
# -*-coding:utf-8-*- ''' 朴素贝叶斯算法 ''' from __future__ import division global className className = "class" def calc_class(train, classValue): # 计算分类的概率 _num_cls = 0 _num_trains = len(train) for t in train: if t[className] == classValue: _num_cls += 1 return _num_cls / _num_trains def calc_attr(train, classValue, attrName, attrValue): # 计算属性的概率 _num_cls = 0 _num_attr = 0 for a in train: if a[className] == classValue: _num_cls += 1 if a[attrName] == attrValue: _num_attr += 1 if _num_attr == 0: _num_attr = 1 return _num_attr / _num_cls def bayes(train, test, classY, classN): _prob_Y = calc_class(train, classY) _prob_N = calc_class(train, classN) for key,value in test.items(): _prob_Y *= calc_attr(train, classY, key, value) _prob_N *= calc_attr(train, classN, key, value) return {classY:_prob_Y,classN:_prob_N} if __name__=='__main__': # 训练数据 train = [ {"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" }, ] # 测试数据 test = {"outlook":"overcast","temp":"cool","humidity":"high","wind":"strong"} print bayes(train, test, "yes", "no")
相关文章推荐
- Python实现的朴素贝叶斯分类器示例
- python实现一个朴素贝叶斯分类器
- 【机器学习算法-python实现】扫黄神器-朴素贝叶斯分类器的实现
- 机器学习实战——python实现简单的朴素贝叶斯分类器
- python实现朴素贝叶斯分类器
- <基础原理进阶>机器学习算法python实现【3】--文本分析之朴素贝叶斯分类器
- 【机器学习算法-python实现】扫黄神器-朴素贝叶斯分类器的实现
- 机器学习实战 朴素贝叶斯分类器 python3实现
- 朴素贝叶斯分类器的python实现
- Python实现朴素贝叶斯分类器的方法详解
- 朴素贝叶斯分类算法原理与Python实现与使用方法案例
- 朴素贝叶斯案例1:进行文档/评论分类(python实现)
- [置顶] 使用python实现的简单二分类器—感知器
- Python实现nb(朴素贝叶斯)
- 统计学习方法--朴素贝叶斯 python实现
- 朴素贝叶斯案例2:拼写纠错(python实现)
- 利用Python实现朴素贝叶斯文本分类
- python机器学习实战3:朴素贝叶斯分类器
- 学习笔记——Kaggle_Digit Recognizer (朴素贝叶斯 Python实现)
- 【Python】基于kNN算法的手写识别系统的实现与分类器测试