朴素贝叶斯算法原理及Scala实现
来源:互联网 发布:优化网络工程师和seo 编辑:程序博客网 时间:2024/06/09 21:55
朴素贝叶斯分类器基于一个简单的假定:给定目标值时属性之间相互条件独立。
P( Category | Document) = P ( Document | Category ) * P( Category) / P(Document)
更多学习其理论可以参看:http://wenku.baidu.com/link?url=Hu9YryuNlmH-bZcU_dcKYDOsOKU8Wm3ysTVsTI76ZZLynjUWnVmL_XuJdvRkiM7DH3e5Ec8h9gpCUy-d7576NI3TuaAOtZ58DGlTvzwXk27
代码编写思想:
两层循环一层循环实列,第二层循环每一个实列的属性对其进行操作。
具体案列:
一个人买电脑的预测,假定影响一个买电脑的影响因素有两个他的身份,还有收入。
样本数据:
by:买电脑,bn:不买,sty:表示学生,stn:非学生,inh:收入高
inl:收入低
1,by sty inh
2,by sty inh
3,bn sty inl
4,by stn inh
5,bn stn inh
6,by stn inh
7,bn stn inl
8,bn stn inl
9,by stn inl
Scala代码: import org.apache.spark.mllib.linalg.Vectorsimport org.apache.spark.mllib.regression.LabeledPointimport org.apache.spark.{SparkContext, SparkConf}/** * Created by Administrator on 2016/7/19. */object MyNaiveBayes { def main(args: Array[String]) { val conf =new SparkConf().setAppName("WordCount").setMaster("local"); val sc = new SparkContext(conf) val data = sc.textFile("file///F:/1/buycomputer.txt") val feature=data.map(_.split(",")) val feature1=feature.toArray() var sty : Float = 0 var by : Float=0 var ihy: Float=0 var ihn:Float=0 var stn:Float=0 var bn:Float=0 for(j <- 0 to feature1.length-1){ var flags:Boolean=false var flag:Boolean=false var flagsn:Boolean=false var flagn:Boolean=false val feature2=feature1(j) //println("--------------"+feature2(1))//.toString.split(" ").toList(0)+"==========") val feature3=feature2(1).toString.split(" ").toList for(i <-0 to feature3.length-1){ if(feature3(i).equals("by")){ by+=1 flags=true flag=true } if(feature3(i).equals("sty")&& flags){ sty+=1 flags=false } if(feature3(i).equals("inh") && flag){ ihy=ihy+1 flag=false } if(feature3(i).equals("bn")){ bn+=1 flagsn=true flagn=true } if(feature3(i).equals("inh") && flagn){ ihn=ihn+1 flagn=false } if(feature3(i).equals("sty") && flagsn){ stn=stn+1 flagsn=false } } } var allby : Float=by/(feature1.length).toFloat var sby :Float=sty/by var iny: Float=ihy/by var py:Float=allby*sby*iny var allbn:Float=bn/(feature1.length).toFloat var sbn:Float=stn/bn var inn:Float=ihn/by var pn:Float=allbn*sbn*inn if(py>pn){ println("通过该样本分析会购买电脑!!!!") }else{ println("通过该样本分析不会购买电脑!!!!") } }}
0 0
- 朴素贝叶斯算法原理及Scala实现
- 朴素贝叶斯原理及实现
- 朴素贝叶斯分类和预测算法的原理及实现
- 朴素贝叶斯算法原理及Spark MLlib调用实例(Scala/Java/Python)
- 朴素贝叶斯原理及Python实现
- 朴素贝叶斯原理及python实现
- 朴素贝叶斯算法分析及java 实现
- 写程序学ML:朴素贝叶斯算法原理及实现(一)
- 写程序学ML:朴素贝叶斯算法原理及实现(二)
- 写程序学ML:朴素贝叶斯算法原理及实现(三)
- 分类算法-----朴素贝叶斯原理和python实现
- 朴素贝叶斯算法原理小结
- 朴素贝叶斯算法原理小结
- 朴素贝叶斯算法原理小结
- 朴素贝叶斯算法原理小结
- 朴素贝叶斯分类原理及Python实现简单文本分类
- SPARK朴素贝叶斯实现原理
- 朴素贝叶斯分类算法理解及文本分类器实现
- 计算机网络重点知识总结
- Spring mvc中@RequestMapping 6个基本用法小结
- java②
- Oracle、MySQL的分页语句和使用ThreadLocal的性能优化问题
- Struts2-国际化
- 朴素贝叶斯算法原理及Scala实现
- hdojEXCEL排序
- Java平台无关性
- Codeforces Round #363 (Div. 2) C. Vacations
- python3判断变量类型
- JAVA学习18_Java集合---HashMap源码剖析
- 集合接口(The Collection Interface)
- ViewSwitcher设置动画- anim translate中 fromXDelta、toXDelta、fromYDelta、toXDelta属性
- Spring中的注解浅析!!