贝叶斯 算法 实例 scala

概率编程实战 内容简介 概率推理是不确定性条件下做出决策的重要方法,在许多领域都已经得到了广泛的应用。概率编程充分结合了概率推理模型和现代计算机编程语言,使这一方法的实施更加简便,现已在许多领域(包括炙手可热的机器学习)中崭露头角,各种概率编程系统也如雨后春笋般出现。 本书的作者 Avi Pfeffer 正是主流概率编程系统 Figaro 的首席开发者,他以详尽的实例、清晰易懂的解说引领读者进入这一过去令人望... 阅读详情
package mlia.bayes

import breeze.linalg._

object Prep {

  def loadDataSet: (Array[Array[String]], Vector[Int]) = {

    val postingList = Array(
      Array("my", "dog", "has", "flea", "problems", "help", "please"),
      Array("maybe", "not", "take", "him", "to", "dog", "park", "stupid"),
      Array("my", "dalmation", "is", "so", "cute", "I", "love", "him"),
      Array("stop", "posting", "stupid", "worthless", "garbage"),
      Array("mr", "licks", "ate", "my", "steak", "how", "to", "stop", "him"),
      Array("quit", "buying", "worthless", "dog", "food", "stupid"))

    val classVec = DenseVector(0, 1, 0, 1, 0, 1)

    (postingList, classVec)
  }

  def createVocabList(dataSet: Array[Array[String]]): Array[String] = dataSet.flatten.distinct

  def setOfWords2Vec(vocabList: Array[String], inputSet: Array[String]): DenseVector[Int] = {
    val returnVec: DenseVector[Int] = DenseVector.zeros[Int](vocabList.size)
    inputSet.foldLeft(returnVec) { (state, word) =>
      if (vocabList.contains(word)) state(vocabList.indexOf(word)) = 1
      else println(s"the word: $word is not in my Vocabulary!")
      state
    }
  }

  def bagOfWords2VecMN(vocabList: Array[String], inputSet: Array[String]): DenseVector[Int] = {
    inputSet.foldLeft(DenseVector.zeros[Int](vocabList.size)) { (state, word) =>
      if (vocabList.contains(word)) state(vocabList.indexOf(word)) = state(vocabList.indexOf(word)) + 1
      else println(s"the word: $word is not in my Vocabulary!")
      state
    }
  }
}
package mlia.bayes

import breeze.linalg._
import breeze.numerics._

object NaiveBayes {

  case class Prob(num: Vector[Int], denom: Double) {

    def probability: Vector[Double] = num.mapValues(_.toDouble) :/ denom

    def logProbability: Vector[Double] = log(num.mapValues(_.toDouble) :/ denom)
  }

  object Prob {
    def apply(size: Int): Prob = Prob(DenseVector.ones(size), 2.0d) // avoid 0
  }

  def trainNB0(trainMatrix: DenseMatrix[Int], trainCategory: Vector[Int]): (Prob, Prob, Double) = {

    val numTrainDocs = trainMatrix.rows
    val numWords = trainMatrix.cols

    val probs = (0 until numTrainDocs).foldLeft((Prob(numWords), Prob(numWords))) { (state, i) =>
      val v: Vector[Int] = trainMatrix(i, ::).toDenseVector // [0, 1, 0, 0, 1, 0...]
      // vector addition
      if (trainCategory(i) == 1) (Prob(state._1.num + v, state._1.denom + v.sum), state._2) // add up class=1
      else (state._1, Prob(state._2.num + v, state._2.denom + v.sum))
    }
    (probs._2, probs._1, trainCategory.sum / numTrainDocs.toDouble) // probability, class=0, class=1, abusive
  }

  def classifyNB(vec2Classify: Vector[Int], p0Vec: Vector[Double], p1Vec: Vector[Double], pClass1: Double) = {
    val p1 = (vec2Classify.mapValues(_.toDouble) :* p1Vec: Vector[Double]).sum + log(pClass1)
    val p0 = (vec2Classify.mapValues(_.toDouble) :* p0Vec: Vector[Double]).sum + log(1.0 - pClass1)
    if (p1 > p0) 1 else 0
  }
}
朴素贝叶斯分类算法理解笔记 朴素贝叶斯分类算法理解笔记 决策树是一种非常明确的判断选择过程,即某个判断条件确定了,则接下来的决策路径也确定了。 但在很多实际问题中,某一个判定条件满足与否,并不能百分百支持做出某个决策,往往只在一定程度上影响最终决策。而这个一定程度,在数学上可以用概率来量化。 贝叶斯分类算法是一种有监督的分类算法,以贝叶斯公式作为支撑,在大量样本下有良好的表现。 1、有关的几个概念 举个例子: 每年有 52 周,其中 40 周是上学周, 12 周是放假周。 上学周的周一有 80% 的可能性发生早高峰拥堵 。 放假周的周 阅读详情

相关推荐

scala实现朴素贝叶斯算法

自己用scala实现的朴素贝叶斯算法。最近学习machine learning,由于之前学习了spark,于是使用scala尝试写写代码

朴素贝叶斯算法原理及Scala实现

朴素贝叶斯分类器基于一个简单的假定:给定目标值时属性之间相互条件独立。 P( Category | Document) = P ( Document | Category ) * P( Category) / P(Document) 更多学习其理论可以参看:http://wenku.baidu.com/link?url=Hu9YryuNlmH-bZcU_dcKYDOsOKU8Wm3ysTVsTI

young_so_nice的博客 2798

DRAM刷新refresh相关知识归类-基础小知识(三)

RAM每一位数据都是通过芯片内的一个小电容充电(或低电平)存储的。但随着时间的推移,电容逐渐失去电荷。为避免丢失存储的数据,必须定期刷新以将电荷(如果存在)恢复到其原始级别。此刷新过程包括读取每个位的值,然后将其写回。在此“刷新”期间,内存被占用,无法执行加载或存储位等正常操作。知道了应该这么做,但怎么去做以及有什么办法更有效率去做,就是接下来要整理的内容。

Paul 安的博客 1万+

Scala实现朴素贝叶斯算的改正(一)

前面写了用Scala实现朴素贝叶斯算法,其实是不完善的,没有真正的实现。 简单说,朴素贝叶斯算法,就是个体的每个属性都是相互独立的,计算他们的概率,这个不细说,可以参看:http://www.ruanyifeng.com/blog/2013/12/naive_bayes_classifier.html 实现贝叶斯算法需要分两步走: 首先训练样本得到模型,然后根据模型,对个体的行为进行判断预测。

young_so_nice的博客 772

共享单车数据分析与需求预测项目

除了自行车共享系统的有趣的实际应用之外,这些系统生成的数据特征使它们成为研究的有吸引力的对象。由于这些系统在交通、环境和健康问题中的重要作用,它们引起了极大的关注。Huber 回归器:一个对异常值具有鲁棒性的模型,CV 得分为 0.4660,表明它对此数据集可能不那么有效。代码中的内容cv_score就像您正在使用的机器学习模型的成绩单。它告诉您模型的表现如何。减少异常值的影响:它还可以减少异常值的影响,因为对数转换显着缩小了数据的范围。因此,cv_score平均分数表明您的模型的预测效果如何。

极光喵的博客 2948

SAP Fiori Launchpad Tile,UI5 应用,和 PFCG Role 的对应关系

问题:已经看到了SAP Fiori Launchpad上的某个tile,如何反推后台需要配置哪个PFCG Role才能看到该tile? 这个问题是今天一个朋友在微信上问我的。因为我最近忙着学习一个新的SAP产品,所以这个问题也没有时间展开来写,本文就只做概要介绍。 下图是一个Gateway系统上打开的SAP CRM Fiori Launchpad: 如何弄清楚后台用户配置了哪个PFCG Role之后,才能看到Sales Representative(CRM)这个Group下的tile? 既然当前我使用的用

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1521

改进Scala实现贝叶斯算法

前两天写了用Scala实现贝叶斯算的一个小案例,但是在上个案列中数据都是定死的,比如说只能规定人有几个属性,然后才能对其进行计算和分析,现在做的一个改进就是可以计算分析任意多个属性,最后得出结论。 具体解决思想: 1,循环有多少个个体 2,循环个体的属性 3,匹配属性特征,如果正确将这个特征加1放入到一个可变的Float数组中在下次循环时可以通过判断这个数组的长度来确

young_so_nice的博客 1168

手把手教你完成YOLOv9 PyQt5目标检测界面搭建,实现图片检测、视频检测、摄像头检测,可用于大论文凑工作量或毕设必备,全网最详细教程

目标检测是计算机视觉中的重要任务,广泛应用于安防监控、自动驾驶、智能家居等领域。YOLO系列模型由于其高效的检测速度和较高的准确率,成为目标检测任务的首选算法之一。本项目结合 YOLOv9与 PyQt5,构建了一个图形化界面,便于用户进行目标检测的操作和展示,实现对图片、视频和摄像头的实时目标检测,不仅可以用于大论文的工作量展示,还可以作为毕业设计。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 2657

朴素贝叶斯分类器_朴素贝叶斯分类器原理及其简单实现(scala)

基本原理在分类问题中,需要根据给定的特征向量 来预测样本所属的类别 ,即 的取值依赖于 ,从条件概率的角度来看,这种依赖可以看作是 如果我们知道 的具体形式,那么能通过计算条件概率来判断 最可能的类别,即 (1)...

weixin_39787345的博客 331

微信小程序(云开发) - 实现微信小程序拼团功能+前后台源码/数据库设计,开团参团、自动成团、微信分享链接URL参与拼团、组团人数/倒计时/实时数据、设置拼团人数限制等(拼团退款处理逻辑、订单同步等)

实现微信小程序云开发拼团功能,云开发小程序--微信拼团设计实现,微信小程序实现秒杀、拼团等效果,微信小程序云开发拼团源码完整版 包含前后台和数据库,拼团商城小程序开发,分销,拼团,社群团购,微信小程序—判断参团人数(设置拼团剩余人数数组)拼多多拼团小程序开发,微信云开发教程怎么实现微信小程序云开发拼团功能?云开发如何实现拼团,拼团小程序怎么弄,微信小程序案例:拼团模块,需要朋友助力,详细源码demo示例,如何做拼团功能,云开发小程序如何做拼团功能,外卖电商拼团,仿拼多多拼团,拼团后退款怎么办,拼团后订单管理

🏆 前端领域优质创作者 4629

uni-app:实现APP设置手机闹钟+取消闹钟+响铃重复/文字等,帮用户设置好闹钟并备注文本,uni-app设置安卓系统闹钟和苹果ios系统闹钟(uniapp调用手机上的闹钟,详细示例代码demo)

uniapp设置安卓和iOS闹钟的插件,uni-app设置安卓系统闹钟,uniapp设置苹果ios系统闹钟,uniapp设置定时闹铃的完整解决方案,UniApp设置手机闹钟,uniApp如何设置手机闹铃,uniapp设置闹钟,设置闹钟提醒,uni-app设置安卓系统闹钟_通过uniapp设置原声闹钟,调用android系统闹钟,如何在App中启动系统闹钟,uniapp如何取消闹钟,通过调用ios的原生接口来设置手机闹钟,uni-app 调用手机闹钟功能,uniap调用ios系统闹钟,uniapp调用手机上的

✅ 精选推荐文章 4235

朴素贝叶斯算法原理及Spark MLlib调用实例(Scala/Java/Python)

朴素贝叶斯 算法介绍: 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。 朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,在没有其它可用信息下,我们会选择条件概率最大的类别作为此待分类项应属的类别。 朴素贝叶斯分类的正式定义如下: 1、设 为一个待分类项,而每个a为x的一个特征属性。 2、有类别集合 。 3、计算 。 4、如

liulingyuan6的博客 6839

手把手教你学simulink(12.10)--设计和仿真一个用于控制飞机纵向运动(高度和速度)的多变量控制系统

飞机的纵向运动控制是航空工程中的一个重要问题,涉及飞机的高度和速度的精确控制。多变量控制系统可以同时控制多个飞行参数,确保飞机在最佳条件下运行。Simulink提供了一个强大的平台,用于建模、仿真和分析动态系统,非常适合设计和测试多变量控制系统。通过本项目的实施,我们成功设计和仿真了一个用于控制飞机纵向运动(高度和速度)的多变量控制系统。该项目展示了从系统建模、控制器设计、仿真验证到结果分析的完整流程,为多变量控制系统的设计提供了有价值的参考。

MHD0815的博客 598

java mllib 算法_朴素贝叶斯算法原理及Spark MLlib实例(Scala/Java/Python)

朴素贝叶斯算法介绍:朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,在没有其它可用信息下,我们会选择条件概率最大的类别作为此待分类项应属的类别。朴素贝叶斯分类的正式定义如下:1、设为一个待分类项,而每个a为x的一个特征属性。 2、有类别集合。 3、计算。 4、如果,则。 那么现在的关键就...

weixin_31093677的博客 259

在 ABAP 平台配置 OAuth 2.0 Client(OA2C_CONFIG):一份可落地的全景实践

本文详细介绍了在ABAP平台中配置OAuth 2.0客户端的完整流程。重点讲解了四种授权类型(Client Credentials、Authorization Code、SAML 2.0 Bearer Assertion、Resource Owner Password Credentials)的适用场景和配置要点,以及客户端认证的三种方式(Client Secret、Client Certificate、mTLS)。文章提供了操作步骤、排错建议和工程实践指导,包括端点配置、回调地址管理、scopes设置等关

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 359

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

朴素贝叶斯算法原理及Spark MLlib实例(Scala/Java/Python)

朴素贝叶斯 算法介绍: 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。 朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,在没有其它可用信息下,我们会选择条件概率最大的类别作为此待分类项应属的类别。 朴素贝叶斯分类的正式定义如下: 1、设为一个待分类项,而每个a为x的一个特征属性。 2、有类别集合。 3、计算。 4、如果...

weixin_30596023的博客 222

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

贝叶斯分类算法

贝叶斯分类算法 朴素贝叶斯(Naive Bayes ,NB)算法是基于贝叶斯定理与特征条件独立假设的分类方法,该算法是有监督的学习算法,解决的是分类问题,是将一个未知样本分到几个预先已知类别的过程。 朴素贝叶斯的思想就是根据某些个先验概率计算Y变量属于某个类别的后验概率,也就是根据先前事件的有关数据估计未来某个事件发生的概率。 举例: 一个学校内有60%的学生是男生,40%的学生是女生。根据统计,...

无境 6835

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

分类算法 之 朴素贝叶斯--案例与代码解析

朴素贝叶斯定理与实例

【人工智能】王小草的博客 3376

Spark MLlib 机器学习算法与源码解析(网络课程—第一期)

《Spark MLlib 机器学习算法与源码解析》spark是一个开源集群运算框架,最初是由加州大学柏克利分校AMPLab所开发。Spark使用了内存内运算技术,在内存上的运算速度比Hadoop MapReduce的运算速度快上100倍,即便是在磁盘上运行也能快10倍。Spark允许将数据加载至集群内存,并多次对其进行查询,非常适合用于机器学习算法。目前,Spark成为了现在大数据领域最火的开源软

Spark MLlib 机器学习 1万+

大数据开发之机器学习总结(Mllib示例)(五)

大数据开发之机器学习总结(Mllib示例)(五) 背景 作为spark框架中支持机器学习的模块,其算法库核心内容如下 可以看到,主要就是分类,回归,决策树等算法 1. 分类算法 分类算法属于监督式学习,使用类标签已知的样本建立一个分类函数或分类模型,应用分类模型,能把数据库中的类标签未知的数据进行归类 分类在数据挖掘中是一项重要的任务,目前在商业上应用最多,常见的典型应用场景有流失预测、精确营销、客户获取、个性偏好等 MLlib 目前支持分类算法有: 逻辑回归、支持向量机、朴素贝叶斯和决策树 导

xiaohu21的博客 486

算法小白的第一次尝试---朴素贝叶斯

package Bayes import org.apache.spark.SparkConf import org.apache.spark.SparkContext import scala.collection.mutable.ArrayBuffer import org.apache.spark.ml.feature.LabeledPoint import org.apache.spark...

Java_Man_China的博客 9433

贝叶斯的算法

一、贝叶斯定理数学基础 我们都知道条件概率的数学公式形式为 即B发生的条件下A发生的概率等于A和B同时发生的概率除以B发生的概率。 根据此公式变换,得到贝叶斯公式: 即贝叶斯定律是关于随机事件A和B的条件概率(或边缘概率)的一则定律。通常,事件A在事件B发生的条件溪的概率,与事件B在事件A的条件下的概率是不一样的,而贝叶斯定律就是描述二者之间的关系的。 更进一步将贝叶斯公式进行推广,假设事件A发...

weixin_44274975的博客 188

Spark 贝叶斯分类算法

一、贝叶斯定理数学基础   我们都知道条件概率的数学公式形式为   即B发生的条件下A发生的概率等于A和B同时发生的概率除以B发生的概率。   根据此公式变换,得到贝叶斯公式:  即贝叶斯定律是关于随机事件A和B的条件概率(或边缘概率)的一则定律。通常,事件A在事件B发生的条件溪的概率,与事件B在事件A的条件下的概率是不一样的,而贝叶斯定律就是描述二者之间的关系的。   更进一步将贝叶

qq546542233的博客 518

spark NaiveBayes朴素贝叶斯分类算法入门demo(Java版/Scala版)

spark NaiveBayes朴素贝叶斯分类算法入门demo(Java版/Scala版) 一、Java版 BayesJava.java package top.it1002.spark.ml; import org.apache.spark.SparkConf; import org.apache.spark.SparkContext; import org.apache.spark.ap...

Jamson 977

[分类算法] :朴素贝叶斯 NaiveBayes

[分类算法] :朴素贝叶斯 NaiveBayes 1. 原理和理论基础(参考) 2. Spark代码实例: 1)windows 单机 import org.apache.spark.mllib.classification.NaiveBayes impo...

a45691316的博客 375
上一篇: 贝叶斯 算法 实例
下一篇: 决策树 算法 理论
mllhxn
博客等级 码龄14年 116粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值