mahout-0.6中naive bayes训练过程
来源:互联网 发布:淘宝 足迹 没看过 编辑:程序博客网 时间:2024/06/16 21:19
对应的类为:org.apache.mahout.classifier.naivebayes.training.TrainNaiveBayesJob
注:困扰了几天的问题。。始终觉得他输出的label有问题。。最后发现0.6中实现的源码是错误的,0.7和0.8中都更正了过来。。坑爹啊有木有~~下方的截图都是在错误的源码基础上弄的,懒得截新的了~~
问题源码:package org.apache.mahout.classifier.naivebayes.training.IndexInstancesMapper;
String label = labelText.toString();//如果按这样来处理,他会将每个子文件夹下的子文件当成是一个类别。
org.apache.mahout.classifier.naivebayes.BayesUtils;
String theLabel = ((Pair<?,?>) label).getFirst().toString();//同上
这里我选择tf向量
1、第一个mr程序:add up all the vectors with the same labels, while mapping the labels into our index
这个mr程序的主要功能是将输入文本映射成index形式,例如:
输入文本形式:词频形式
那么转换后的形式为:依然是词频,只不过对于每个类别的文本进行了加和
这里第一个mr程序的功能非常简单,仅仅是将输入文件进行了一次映射,而文件真正的value是没有变的。
2、第二个mr程序:sum up all the weights from the previous step, per label and per feature
这里会从上一步的结果中生成两个字典,一个是针对每个term而言的总的计数值,另一个是针对每个类别而言的总的词数
3、第三个mr程序,主要用来计算每个label对应的归一化权重值。
这里的输入是第2步的输出,对于每个类别的instance是指上面生成的一个总的词频字典。
1)、StandardNaiveBayesClassifier
计算公式为:double weight = Math.log((instance.zSum() + alphaI()) / (labelWeight(label) + alphaI() * numFeatures()))
这里instance是指传入的一个类别的tf向量,zSum() 是求出tf向量的各,alphaI()为对应的平滑参数,这里设置为1,labelWeight(label)是类别的总词数,numFeatures()返回的总的词数。
对于NaiveBayesModel这个类而言比较简单,只包含了相关的几个数据:1、2、3中生成的三个,以及对应的alphal值,包含序列化函数跟验证函数。也就是说mahout中naive bayes模型对应到三个文件夹的内容。
- mahout-0.6中naive bayes训练过程
- mahout中naive bayes分类模型实现过程
- mahout中naive bayes测试实现
- mahout测试naive Bayes算法
- Mahout Naive Bayes中文新闻分类示例
- Mahout分类算法学习之实现Naive Bayes分类示例
- Naive Bayes
- naive bayes
- Naive Bayes
- Naive Bayes
- Naive Bayes
- Naive Bayes
- Naive Bayes
- Naive Bayes
- Naive Bayes
- Mahout中分布式bayes实现(转)
- mahout中bayes分类分析—1
- Mahout中分布式bayes实现-转
- Android Best Practices 主要内容
- C#多线程学习(一) 多线程的相关概念
- Android 设置屏幕不待机
- 工业级无线AP是什么
- 性能测试知多少----性能测试分类之我见
- mahout-0.6中naive bayes训练过程
- 验证 js 的特殊字符
- QT画曲线以及QWT在Windows下的配置
- ulimit 管理系统资源的例子
- log4j属性文件 每天产生一个日志文件
- 一篇11年写的列式存储对比的文章作为参考
- linux 文件属性
- 反正切函数的应用
- 计算几何