Machine Learing in Action
来源:互联网 发布:网络解锁助手1.0.9 编辑:程序博客网 时间:2024/06/05 08:21
机器学习两种策略
判别式模型
给定样本x,可通过直接建模
生成式模型
先对联合概率分布
(x为样本,c为类标记)
最小化分类错误率的贝叶斯最优分类器(推导略)
即对每个样本x,选择能使后验概率
朴素贝叶斯分类器
朴素贝叶斯分类器采用“属性条件独立性假设”,对已知类别,假设所有属性相互独立,即每个属性独立的对分类发生影响。
由于属性独立,式子可化为:
因为对于所有类别P(x)相同,所以,朴素贝叶斯分类器表达式
若有充足的独立同分布样本,可以估计出类先验概率
对离散属性,条件概率
对连续属性,可考虑概率密度函数……
朴素贝叶斯分类器代码片段
分类器训练函数
参数trainMatrix:
为文档矩阵
形如:
参数trainCategory:
为每篇文档类别标签所构成的向量
形如:
def trainNB0(trainMatrix,trainCategory): numTrainDocs = len(trainMatrix) numWords = len(trainMatrix[0]) #类先验概率P(c1) pAbusive = sum(trainCategory)/float(numTrainDocs) #如下两行为拉普拉斯修正(平滑处理) p0Num = ones(numWords); p1Num = ones(numWords) #分子为1 p0Denom = 2.0; p1Denom = 2.0 #N=2.0表示训练集D中可能的类别数为2个(如侮辱性和非侮辱性) for i in range(numTrainDocs): if trainCategory[i] == 1: p1Num += trainMatrix[i] p1Denom += sum(trainMatrix[i]) else: p0Num += trainMatrix[i] p0Denom += sum(trainMatrix[i]) #第一类(书中为侮辱性词汇类)每个属性(对应书中的每个单词)估计条件概率P(xi/c1)所构成的向量 p1Vect = log(p1Num/p1Denom) #第二类(书中为非侮辱性词汇类)每个属性(对应书中的每个单词)估计条件概率P(xi/c0)所构成的向量 p0Vect = log(p0Num/p0Denom) return p0Vect,p1Vect,pAbusive
分类函数
'''vec2Classify:测试样本属性值向量p0Vec:第一类每个属性估计条件概率P(xi/c0)所构成的向量p1Vec:第二类每个属性估计条件概率P(xi/c1)所构成的向量pClass1:类先验概率P(c1)'''def classifyNB(vec2Classify, p0Vec, p1Vec, pClass1): p1 = sum(vec2Classify * p1Vec) + log(pClass1) p0 = sum(vec2Classify * p0Vec) + log(1.0 - pClass1) if p1 > p0: return 1 else: return 0
sum(vec2Classify * p1Vec)
和sum(vec2Classify * p0Vec)
为log(pClass1)
和log(1.0 - pClass1)
为类先验概率P(c1)和P(c0)
0 0
- Machine Learing in Action
- Machine Learing in Action
- machine learning in action
- Machine Learning in Action
- Machine Learning In Action
- Machine Learning In Action
- Machine Learning In Action
- Machine Learning In Action
- Machine Learning In Action
- Machine Learning In Action
- Machine Learning In Action
- Machine Learning In Action
- Machine Learning In Action
- Machine Learning in Action
- Machine Learning in Action
- Machine Learing导读。
- 《Machine Learning In Action》翻译
- MACHINE LEARNING IN ACTION KNN
- Python中的timedelta
- 线性表基础知识总结
- 进程监控脚本程序
- 线性表基础知识总结
- Ecshop模板开发(十四):商品详情页显示与添加标签
- Machine Learing in Action
- lct学习笔记
- 使用Hexo搭建个人博客
- Opencv 图像叠加 添加水印
- 不必纠结MVC还是MVP,听我说两句~
- LeetCode 406. Queue Reconstruction by Height
- [Echarts可视化] 一.入门篇之简单绘制中国地图和贵州地区
- 150. Evaluate Reverse Polish Notation
- POJ 3710 Christmas Game 树上删边博弈,压缩环