千家信息网

spark mllib中朴素贝叶斯算法怎么用

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍spark mllib中朴素贝叶斯算法怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!优点对待预测样本进行预测,过程简单速度快(想想邮件分类的问题,预测就是
千家信息网最后更新 2026年11月02日spark mllib中朴素贝叶斯算法怎么用

这篇文章主要介绍spark mllib中朴素贝叶斯算法怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

优点

  1. 对待预测样本进行预测,过程简单速度快(想想邮件分类的问题,预测就是分词后进行概率乘积,在log域直接做加法更快)。

  2. 对于多分类问题也同样很有效,复杂度也不会有大程度上升。

  3. 在分布独立这个假设成立的情况下,贝叶斯分类器效果奇好,会略胜于逻辑回归,同时我们需要的样本量也更少一点。

  4. 对于类别类的输入特征变量,效果非常好。对于数值型变量特征,我们是默认它符合正态分布的。

缺点

  1. 对于测试集中的一个类别变量特征,如果在训练集里没见过,直接算的话概率就是0了,预测功能就失效了。当然,我们前面的文章提过我们有一种技术叫做『平滑』操作,可以缓解这个问题,最常见的平滑技术是拉普拉斯估测。

  2. 那个…咳咳,朴素贝叶斯算出的概率结果,比较大小还凑合,实际物理含义…恩,别太当真。

  3. 朴素贝叶斯有分布独立的假设前提,而现实生活中这些predictor很难是完全独立的。

最常见应用场景

  • 文本分类/垃圾文本过滤/情感判别:这大概会朴素贝叶斯应用做多的地方了,即使在现在这种分类器层出不穷的年 代,在文本分类场景中,朴素贝叶斯依旧坚挺地占据着一席之地。原因嘛,大家知道的,因为多分类很简单,同时在文本数据中,分布独立这个假设基本是成立的。 而垃圾文本过滤(比如垃圾邮件识别)和情感分析(微博上的褒贬情绪)用朴素贝叶斯也通常能取得很好的效果。

  • 多分类实时预测:这个是不是不能叫做场景?对于文本相关的多分类实时预测,它因为上面提到的优点,被广泛应用,简单又高效。

  • 推荐系统:是的,你没听错,是用在推荐系统里!!朴素贝叶斯和协同过滤(Collaborative Filtering)是一对好搭档,协同过滤是强相关性,但是泛化能力略弱,朴素贝叶斯和协同过滤一起,能增强推荐的覆盖度和效果。

运行代码如下

package spark.logisticRegressionimport org.apache.spark.mllib.classification.NaiveBayesimport org.apache.spark.mllib.linalg.Vectorsimport org.apache.spark.mllib.regression.LabeledPointimport org.apache.spark.mllib.util.MLUtilsimport org.apache.spark.{SparkContext, SparkConf}/**  * 朴素贝叶斯僵尸粉鉴定(朴素贝叶斯需要非负特征值)  * 正常用户标记为1,虚假用户标记为0  * V(v1,v2,v3)  * v1 = 已发微博/注册天数  * v2 = 好友数量/注册天数  * v3 = 是否有手机  * 已发微博/注册天数 < 0.05, V1 = 0  * 0.05 <= 已发微博/注册天数 < 0.75, V1 = 1  * 0.75 <= 已发微博/注册天数, V1 = 2  * Created by eric on 16-7-19.  */object zombieFansBayes {  val conf = new SparkConf()   //创建环境变量    .setMaster("local")        //设置本地化处理    .setAppName("ZombieBayes") //设定名称  val sc = new SparkContext(conf)  def main(args: Array[String]) {    val data = sc.textFile("./src/main/spark/logisticRegression/data.txt")    val parsedData = data.map { line =>      val parts = line.split(',')      LabeledPoint(parts(0).toDouble, Vectors.dense(parts(1).split(' ').map(_.toDouble)))    }    val splits = parsedData.randomSplit(Array(0.7, 0.3), seed = 11L)                     //对数据进行分配    val trainingData = splits(0)                                                                     //设置训练数据    val testData = splits(1)                                                                 //设置测试数据    val model = NaiveBayes.train(trainingData, lambda = 1.0)                  //训练贝叶斯模型    val predictionAndLabel = testData.map(p => (model.predict(p.features), p.label)) //验证模型    val accuracy = 1.0 * predictionAndLabel.filter(                                        //计算准确度        label => label._1 == label._2).count()                                           //比较结果    println(accuracy)    val test = Vectors.dense(0, 0, 10)    val result = model.predict(test)//预测一个特征     println(result)//2  }}

data.txt

0,1 0 00,2 0 00,3 0 00,4 0 01,0 1 01,0 2 01,0 3 01,0 4 02,0 0 12,0 0 22,0 0 32,0 0 4

结果如图

以上是"spark mllib中朴素贝叶斯算法怎么用"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

贝叶 朴素 分类 文本 特征 天数 效果 数据 独立 变量 场景 垃圾 概率 结果 问题 发微 应用 推荐 训练 算法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海喔噻互联网科技有限公司 A股互联网金融科技公司 互联网金融公司科技 万易互联网科技 百单互联网科技有限公司 北京禾田雨橡互联网科技 哈尔滨秒房互联网科技有限公司 济南和联互联网科技有限公司 互联网汽车科技小镇 受益于互联网科技的高速发展 宁夏科技产业互联网案例 岳阳华臻互联网科技有限公司 赶超互联网科技 微信多开 华夏恒生互联网科技013171 乌鲁木齐新华智原互联网科技学校 互联网科技的全部知识 福建互联网展示科技馆设计 全球科技与互联网公司市值变化 互联网科技的前景 互联网领先科技成果宣传视频 互联网科技金融公司 郑州华宇互联网科技 左右互联网络科技 互联网5g黑科技有哪些 洛阳昕诺飞互联网科技有限公司 华夏恒生互联网科技013171 半导体是互联网高科技吗 下一代互联网重大应用科技园 全球科技与互联网公司市值变化 互联网科技创新方面的资料
0