[分类算法] :朴素贝叶斯 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)
转载于:https://www.cnblogs.com/skyEva/p/6088653.html
[分类算法] :朴素贝叶斯 NaiveBayes相关推荐
- 机器学习监督学习之分类算法---朴素贝叶斯理论知识
感谢Jack-Cui大佬的知识分享 机器学习专栏点击这里 目录 感谢Jack-Cui大佬的知识分享 0. 概述 1. 朴素贝叶斯理论 1.1 贝叶斯理论 1.1.1 相关计算公式:条件概率公式,贝叶斯 ...
- 机器学习-分类算法-朴素贝叶斯算法07
概率:概率定义为一件事情发生的可能性 如:扔硬币某一面朝上有50%概率 "朴素"贝叶斯:所有特征之间条件独立 朴素贝叶斯-文档分类 from sklearn.datasets im ...
- python人工智能——机器学习——分类算法-朴素贝叶斯算法对新闻进行分类案例
朴素贝叶斯案例流程 1.加载20类新闻数据,并进行分割 2.生成文章特征词 3.朴素贝叶斯estimator流程进行预估 代码 from sklearn.datasets import fetch_2 ...
- python人工智能——机器学习——分类算法-朴素贝叶斯算法
1.概率基础 2.朴素贝叶斯介绍 概率基础 概率定义为一件事情发生的可能性 联合概率和条件概率 朴素贝叶斯-贝叶斯公式 拉普拉斯平滑 如果词频列表里面有很多出现次数都为0,则会导致计算结果为0. sk ...
- 机器学习监督学习之分类算法---朴素贝叶斯代码实践
目录 1. 言论过滤器 1.1 项目描述 1.2 朴素贝叶斯 工作原理: 1.2.1 词条向量 1.3 开发流程: 1.4 代码实现 1.4.1 创建样本 1.4.2 构建词汇表,用于建立词集向量 1 ...
- 基于python的贝叶斯分类算法_分类算法-朴素贝叶斯
朴素贝叶斯分类器(Naive Bayes Classifier, NBC)发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率.同时,NBC 模型所需估计的参数很少,对缺失数据不太敏感,算法也比 ...
- 情感分类与朴素贝叶斯
本文介绍一种机器学习分类算法--朴素贝叶斯算法及其在NLP中的应用.具体实现部分可参考朴素贝叶斯用于情感分类的实现 NLP中的分类 许多自然语言处理任务涉及分类,分类也是人类和机器智能的核心. 文本分 ...
- Machine Learning | (5) Scikit-learn的分类器算法-朴素贝叶斯
Machine Learning | 机器学习简介 Machine Learning | (1) Scikit-learn与特征工程 Machine Learning | (2) sklearn数据集 ...
- a*算法的优缺点_轻松理解机器学习算法-朴素贝叶斯
1.预备知识 贝叶斯定理(Bayes' theorem)是概率论中的一个定理,它跟随机变量的条件概率以及边缘概率分布有关.通常事件A在事件B发生的条件下的概率,与事件B在事件A发生的条件下的概率是不一 ...
最新文章
- 20分钟教你搞懂Git!
- 拥抱AI大趋势,ARM发布两款AI芯片架构
- ubuntu18.04搭建 kubernetes(k8s)集群
- C语言---快速排序
- 关于有窗口元素和无窗口元素
- 跨专业考计算机研究生有专业限制吗,我想跨专业考计算机专业研究生
- 河海大学计算机网络毕业设计,河海大学文件-河海大学毕业设计.doc
- 2022全年度平板电视十大热门品牌销量榜单
- c++ 按分割符(忽略多次出现)切割string字符串
- 教程篇(6.4) 02. FortiOS架构 ❀ 企业防火墙 ❀ Fortinet 网络安全架构师 NSE7
- 星光不问赶路人,时光不负有心人。
- RabbitMQ 面试题目整理
- 攻防世界WEB练习-easyupload
- 【作品展示】双向热电偶热电阻分度表软件
- 一个简单的个人介绍html网页制作
- GPS七参数计算工具
- Demond Page的原理和作用(By Walle@ARMCE)
- ios备忘录下载安卓版_苹果备忘录怎么下载安卓版?有仿iOS备忘录的便签吗
- win7系统桌面计算机怎么打的开,Win7系统怎么开启aero效果 Win7电脑开启aero特效的方法...
- 友盟推送集成小米华为魅族系统通道