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

1. 原理和理论基础(参考)

2. Spark代码实例:

1)windows 单机

import org.apache.spark.mllib.classification.NaiveBayes
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.regression.LabeledPoint
import org.apache.spark.{SparkConf, SparkContext}object local_NaiveBayes {System.setProperty("hadoop.dir.home","E:/zhuangji/winutil/")def main(args:Array[String]) {val conf = new SparkConf().setMaster("local[2]").setAppName("NaiveBayes")val sc = new SparkContext(conf)//initiated data and labeledval data = sc.textFile("E:/Java_WS/ScalaDemo/data/sample_naive_bayes_data.txt")val parsedData = data.map {line =>val parts = line.split(',')LabeledPoint(parts(0).toDouble, Vectors.dense(parts(1).split( ' ').map(_.toDouble)) )}// split dataval splits=parsedData.randomSplit(Array(0.6,0.4),seed=11L)val training=splits(0)val test=splits(1)//model and calculated precision & accuracyval model=NaiveBayes.train(training,lambda=1.0,modelType="multinomial")val predictionAndLabel=test.map(p=>(model.predict(p.features),p.label))val accuracy=1.0*predictionAndLabel.filter(x=>x._1==x._2).count()/test.count()//save and load modelmodel.save(sc,"E:/Spark/models/NaiveBayes")val sameModel=NaiveBayesModel.load(sc,"E:/Spark/models/NaiveBayes")}}

2)集群模式

需要打包,然后通过spark-submit 提交到yarn client或者cluster中:

spark-submit --class myNaiveBayes --master yarn ScalaDemo.jar

import org.apache.spark.mllib.classification.{NaiveBayesModel, NaiveBayes}
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.regression.LabeledPoint
import org.apache.spark.{SparkConf, SparkContext}object myNaiveBayes {def main(args:Array[String]) {val conf = new SparkConf().setAppName("NaiveBayes")val sc = new SparkContext(conf)//initiated data and labeledval data = sc.textFile("hdfs://nameservice1/user/hive/spark/data/sample_naive_bayes_data.txt")val parsedData = data.map {line =>val parts = line.split(',')LabeledPoint(parts(0).toDouble, Vectors.dense(parts(1).split( ' ').map(_.toDouble)) )}// split dataval splits=parsedData.randomSplit(Array(0.6,0.4),seed=11L)val training=splits(0)val test=splits(1)//model and calculated precision & accuracyval model=NaiveBayes.train(training,lambda=1.0,modelType="multinomial")val predictionAndLabel=test.map(p=>(model.predict(p.features),p.label))val accuracy=1.0*predictionAndLabel.filter(x=>x._1==x._2).count()/test.count()//save and load modelmodel.save(sc,"hdfs://nameservice1/user/hive/spark/NaiveBayes/model")val sameModel=NaiveBayesModel.load(sc,"hdfs://nameservice1/user/hive/spark/NaiveBayes/model")}}

3)pyspark 代码实例

可以直接利用spark-submit提交,但注意无法到集群(cluster模式目前不支持独立集群、 mesos集群以及python应用程序)

spark-submit pyNaiveBayes.py

#-*- coding:utf-8 -*-
from pyspark.mllib.classification import NaiveBayes,NaiveBayesModel
from pyspark.mllib.linalg import Vectors
from pyspark.mllib.regression import LabeledPoint
from pyspark import SparkContextif __name__=="__main__":sc=SparkContext(appName="PythonPi")def parseLine(line):parts=line.split(',')label=float(parts[0])features=Vectors.dense([float(x) for x in parts[1].split(' ')])return LabeledPoint(label,features)data=sc.textFile("hdfs://nameservice1/user/hive/spark/data/sample_naive_bayes_data.txt").map(parseLine)training,test=data.randomSplit([0.6,0.4],seed=0)model=NaiveBayes.train(training,1.0)predictionAndLabel=test.map(lambda p:(model.predict(p.features),p.label))accuracy=1.0*predictionAndLabel.filter(lambda(x,v):x==v).count()/test.count()model.save(sc, "hdfs://nameservice1/user/hive/spark/PythonNaiveBayes/model")sameModel = NaiveBayesModel.load(sc, "hdfs://nameservice1/user/hive/spark/PythonNaiveBayes/model")
}

3.  Python 

from sklearn import naive_bayes
import random##拆分训练集和测试集
def SplitData(data,M,k,seed):test=[]train=[]random.seed(seed)for line in data:if random.randint(0,M)==k:test.append(''.join(line))else:train.append(''.join(line))return train,test##按分割符拆分X,Y
def parseData(data,delimiter1,delimiter2):x=[]y=[]for line in data:parts = line.split(delimiter1)x1 = [float(a) for a in parts[1].split(delimiter2)]y1 = float(parts[0])##print x1,y1x.append(x1)y.append(y1)return x,y##读取数据
data=open('e:/java_ws/scalademo/data/sample_naive_bayes_data.txt','r')
training,test=SplitData(data,4,2,10)
trainingX,trainingY=parseData(training,',',' ')
testX,testY=parseData(test,',',' ')##建模
model=naive_bayes.GaussianNB()
model.fit(trainingX,trainingY)##评估
for b in testX:print(model.predict(b),b)

posted on 2016-11-22 11:52 Suckseedeva 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/skyEva/p/6088653.html

[分类算法] :朴素贝叶斯 NaiveBayes相关推荐

  1. 机器学习监督学习之分类算法---朴素贝叶斯理论知识

    感谢Jack-Cui大佬的知识分享 机器学习专栏点击这里 目录 感谢Jack-Cui大佬的知识分享 0. 概述 1. 朴素贝叶斯理论 1.1 贝叶斯理论 1.1.1 相关计算公式:条件概率公式,贝叶斯 ...

  2. 机器学习-分类算法-朴素贝叶斯算法07

    概率:概率定义为一件事情发生的可能性 如:扔硬币某一面朝上有50%概率 "朴素"贝叶斯:所有特征之间条件独立 朴素贝叶斯-文档分类 from sklearn.datasets im ...

  3. python人工智能——机器学习——分类算法-朴素贝叶斯算法对新闻进行分类案例

    朴素贝叶斯案例流程 1.加载20类新闻数据,并进行分割 2.生成文章特征词 3.朴素贝叶斯estimator流程进行预估 代码 from sklearn.datasets import fetch_2 ...

  4. python人工智能——机器学习——分类算法-朴素贝叶斯算法

    1.概率基础 2.朴素贝叶斯介绍 概率基础 概率定义为一件事情发生的可能性 联合概率和条件概率 朴素贝叶斯-贝叶斯公式 拉普拉斯平滑 如果词频列表里面有很多出现次数都为0,则会导致计算结果为0. sk ...

  5. 机器学习监督学习之分类算法---朴素贝叶斯代码实践

    目录 1. 言论过滤器 1.1 项目描述 1.2 朴素贝叶斯 工作原理: 1.2.1 词条向量 1.3 开发流程: 1.4 代码实现 1.4.1 创建样本 1.4.2 构建词汇表,用于建立词集向量 1 ...

  6. 基于python的贝叶斯分类算法_分类算法-朴素贝叶斯

    朴素贝叶斯分类器(Naive Bayes Classifier, NBC)发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率.同时,NBC 模型所需估计的参数很少,对缺失数据不太敏感,算法也比 ...

  7. 情感分类与朴素贝叶斯

    本文介绍一种机器学习分类算法--朴素贝叶斯算法及其在NLP中的应用.具体实现部分可参考朴素贝叶斯用于情感分类的实现 NLP中的分类 许多自然语言处理任务涉及分类,分类也是人类和机器智能的核心. 文本分 ...

  8. Machine Learning | (5) Scikit-learn的分类器算法-朴素贝叶斯

    Machine Learning | 机器学习简介 Machine Learning | (1) Scikit-learn与特征工程 Machine Learning | (2) sklearn数据集 ...

  9. a*算法的优缺点_轻松理解机器学习算法-朴素贝叶斯

    1.预备知识 贝叶斯定理(Bayes' theorem)是概率论中的一个定理,它跟随机变量的条件概率以及边缘概率分布有关.通常事件A在事件B发生的条件下的概率,与事件B在事件A发生的条件下的概率是不一 ...

最新文章

  1. 20分钟教你搞懂Git!
  2. 拥抱AI大趋势,ARM发布两款AI芯片架构
  3. ubuntu18.04搭建 kubernetes(k8s)集群
  4. C语言---快速排序
  5. 关于有窗口元素和无窗口元素
  6. 跨专业考计算机研究生有专业限制吗,我想跨专业考计算机专业研究生
  7. 河海大学计算机网络毕业设计,河海大学文件-河海大学毕业设计.doc
  8. 2022全年度平板电视十大热门品牌销量榜单
  9. c++ 按分割符(忽略多次出现)切割string字符串
  10. 教程篇(6.4) 02. FortiOS架构 ❀ 企业防火墙 ❀ Fortinet 网络安全架构师 NSE7
  11. 星光不问赶路人,时光不负有心人。
  12. RabbitMQ 面试题目整理
  13. 攻防世界WEB练习-easyupload
  14. 【作品展示】双向热电偶热电阻分度表软件
  15. 一个简单的个人介绍html网页制作
  16. GPS七参数计算工具
  17. Demond Page的原理和作用(By Walle@ARMCE)
  18. ios备忘录下载安卓版_苹果备忘录怎么下载安卓版?有仿iOS备忘录的便签吗
  19. win7系统桌面计算机怎么打的开,Win7系统怎么开启aero效果 Win7电脑开启aero特效的方法...
  20. 友盟推送集成小米华为魅族系统通道

热门文章

  1. 数据库SQL笔试题目
  2. Kubernetes API Aggregated 是什么
  3. 办公楼租用技巧及出租办公楼注意事项
  4. 2021nhoi挖矿
  5. 配电网智能远程运维平台
  6. 照片尺寸大小怎样换算?
  7. Myeclipse 手动安装Velocity插件
  8. 月赚2万美元,开发第三方VR Mod竟成稳定副业?
  9. 本原勾股数的表示方法
  10. SEO必须要知道的网站页面优化策略