朴素贝叶斯

算法介绍:

朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。

朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,在没有其它可用信息下,我们会选择条件概率最大的类别作为此待分类项应属的类别。

朴素贝叶斯分类的正式定义如下:

1、设

 为一个待分类项,而每个a为x的一个特征属性。

2、有类别集合

 。

3、计算

 。

4、如果

 ,则

 。

那么现在的关键就是如何计算第3步中的各个条件概率。我们可以这么做:

1、找到一个已知分类的待分类项集合,这个集合叫做训练样本集。

2、统计得到在各类别下各个特征属性的条件概率估计。即

3、如果各个特征属性是条件独立的,则根据贝叶斯定理有如下推导:

因为分母对于所有类别为常数,因为我们只要将分子最大化皆可。又因为各特征属性是条件独立的,所以有:

spark.ml现在支持多项朴素贝叶斯和伯努利朴素贝叶斯。

参数:

featuresCol:

类型:字符串型。

含义:特征列名。

labelCol:

类型:字符串型。

含义:标签列名。

modelType:

类型:字符串型。

含义:模型类型(区分大小写)。

predictionCol:

类型:字符串型。

含义:预测结果列名。

probabilityCol:

类型:字符串型。

含义:用以预测类别条件概率的列名。

rawPredictionCol:

类型:字符串型。

含义:原始预测。

smoothing:

类型:双精度型。

含义:平滑参数。

thresholds:

类型:双精度数组型。

含义:多分类预测的阀值,以调整预测结果在各个类别的概率。

示例:

Scala:

import org.apache.spark.ml.classification.NaiveBayes

import org.apache.spark.ml.evaluation.MulticlassClassificationEvaluator//Load the data stored in LIBSVM format as a DataFrame.

val data = spark.read.format("libsvm").load("data/mllib/sample_libsvm_data.txt")//Split the data into training and test sets (30% held out for testing)

val Array(trainingData, testData) = data.randomSplit(Array(0.7, 0.3), seed = 1234L)//Train a NaiveBayes model.

val model = newNaiveBayes()

.fit(trainingData)//Select example rows to display.

val predictions =model.transform(testData)

predictions.show()//Select (prediction, true label) and compute test error

val evaluator = newMulticlassClassificationEvaluator()

.setLabelCol("label")

.setPredictionCol("prediction")

.setMetricName("accuracy")

val accuracy=evaluator.evaluate(predictions)

println("Accuracy:" + accuracy)

Java:

import org.apache.spark.ml.classification.NaiveBayes;

import org.apache.spark.ml.classification.NaiveBayesModel;

import org.apache.spark.ml.evaluation.MulticlassClassificationEvaluator;

import org.apache.spark.sql.Dataset;

import org.apache.spark.sql.Row;

import org.apache.spark.sql.SparkSession;//Load training data

Dataset dataFrame =spark.read().format("libsvm").load("data/mllib/sample_libsvm_data.txt");//Split the data into train and test

Dataset[] splits = dataFrame.randomSplit(new double[]{0.6, 0.4}, 1234L);

Dataset train = splits[0];

Dataset test = splits[1];//create the trainer and set its parameters

NaiveBayes nb = newNaiveBayes();//train the model

NaiveBayesModel model =nb.fit(train);//compute accuracy on the test set

Dataset result =model.transform(test);

Dataset predictionAndLabels = result.select("prediction", "label");

MulticlassClassificationEvaluator evaluator= newMulticlassClassificationEvaluator()

.setMetricName("accuracy");

System.out.println("Accuracy =" + evaluator.evaluate(predictionAndLabels));

Python:

frompyspark.ml.classification import NaiveBayesfrompyspark.ml.evaluation import MulticlassClassificationEvaluator

# Load training data

data= spark.read.format("libsvm") \

.load("data/mllib/sample_libsvm_data.txt")

# Split the data into train and test

splits= data.randomSplit([0.6, 0.4], 1234)

train= splits[0]

test= splits[1]

# create the trainer andsetits parameters

nb= NaiveBayes(smoothing=1.0, modelType="multinomial")

# train the model

model=nb.fit(train)

# compute accuracy on the testsetresult=model.transform(test)

predictionAndLabels= result.select("prediction", "label")

evaluator= MulticlassClassificationEvaluator(metricName="accuracy")

print("Accuracy:" + str(evaluator.evaluate(predictionAndLabels)))

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

  1. 用python实现朴素贝叶斯算法_朴素贝叶斯算法 python 实现

    应用贝叶斯准则: 使用上面这些定义,可以定义贝叶斯分类准则为: 如果 P(c1|x, y) > P(c2|x, y), 那么属于类别 c1; 如果 P(c2|x, y) > P(c1|x, ...

  2. 朴素贝叶斯算法_朴素贝叶斯算法原理

    摘要:本文介绍了贝叶斯公式,并根据公式而产生的朴素贝叶斯分类算法在机器学习中的应用,并列举了朴素贝叶斯分类算法的优缺点. 1贝叶斯公式的理解 贝叶斯定理(Bayes' theorem)是概率论中的一个 ...

  3. python实现排列组合公式算法_朴素贝叶斯算法的Python实现

    朴素贝叶斯分类算法被广泛应用于文本分类场景中.包含垃圾邮件.互联网新闻等分类任务,属于有监督学习算法.它独立考量每一维度特征被分类的条件概率,然后综合这些概率对其所在的特征向量做出分类预测,即&quo ...

  4. k近邻算法,朴素贝叶斯算法,分类模型评估,模型调优

    k近邻算法,朴素贝叶斯算法,分类模型评估,模型调优 k近邻算法 k近邻算法概述 k近邻算法代码实现 k近邻算法的评价 朴素贝叶斯算法 朴素贝叶斯算法概述 朴素贝叶斯代码实现 朴素贝叶斯的评价 分类模型 ...

  5. k近邻算法与朴素贝叶斯算法

    机器学习--k近邻算法与朴素贝叶斯算法 k近邻算法 朴素贝叶斯 理论基础: 精确率和召回率 交叉验证与网格搜索 k近邻算法 定义:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大 ...

  6. 算法的优缺点_朴素贝叶斯算法的优缺点

      机器学习算法与自然语言处理推荐  来源:http://www.cnblogs.com/pinard/p/6069267.html 作者:刘建平Pinard [机器学习算法与自然语言处理导读]朴素贝 ...

  7. python贝叶斯算法的论文_朴素贝叶斯算法从入门到Python实践

    1,前言 很久不发文章,整理些干货,希望相互学习吧.进入主题,本文主要时说的为朴素贝叶斯分类算法.与逻辑回归,决策树一样,是较为广泛使用的有监督分类算法,简单且易于理解(号称十大数据挖掘算法中最简单的 ...

  8. 机器学习算法基础——朴素贝叶斯算法

    26.朴素贝叶斯算法原理 联合概率和条件概率 联合概率:包含多个条件,且所有条件同时成立的概率 记作:P(A,B) P(A,B)=P(A)P(B) 条件概率:就是事件A在另外一个事件B已经发生条件下的 ...

  9. 分类算法之朴素贝叶斯算法

    1. 什么是朴素贝叶斯分类方法 2. 概率基础 2.1 概率(Probability)定义 概率定义为一件事情发生的可能性 扔出一个硬币,结果头像朝上 某天是晴天 P(X) : 取值在[0, 1] 2 ...

最新文章

  1. 谷歌新作:视觉Transformer超越ResNet!!!从头开始训练!
  2. iPhone上将短信内容发送到指定邮箱的方法
  3. [NOTE] Linux环境变量
  4. 设计模式-行为型模式-观察者模式
  5. qt designer 插入图片_老同学春节祝福语图片
  6. [html] const nums1 = [1, 2, 2, 1], nums2 = [2] 交集是什么?
  7. Matplotlib - 箱线图、箱型图 boxplot () 所有用法详解
  8. Java正则表达式总结
  9. layui的轮播图片自适应大小_如何使用LayUI实现网页轮播图
  10. JavaWeb项目自动部署,持续集成
  11. JavaScript的==和Java的==比较
  12. Xmind 2022中文高效学习思维导图
  13. 指纹调试 mtk(MT6763)- android8.1
  14. Cloudera Manager Agent 的 Parcel 目录位于可用空间小于 5.0 吉字节 的文件系统上。 /opt/cloudera/parcels(可用:5.0 吉字节 (12.74%)
  15. 全球AMR调度系统分析(RMS、TMS)
  16. 安卓手机内外SD卡互换
  17. 计算机平面设计大专学校排名,平面设计学校排名哪些较好?
  18. Lonza高通量384孔Nucleofector电转平台
  19. python微博自动评论转发_「Python」 - 自动删除微博评论
  20. 三、项目进度管理(输入/工具与技术/输出)

热门文章

  1. pandas创建与保存(导入与导出)dataframe
  2. python提取tuple列表中的特定位置的值
  3. OpenCV检验物体尺寸
  4. Hurst exponent(赫斯特指数)代码与R/S值计算——python
  5. dubbo内置哪几种服务容器_Dubbo服务提供者几种启动方式
  6. LeetCode开心刷题二十七天——51. N-Queens
  7. 2019/7/19 Bootstap练习
  8. luogu P5341 [TJOI2019]甲苯先生和大中锋的字符串
  9. JAVA学习 02Day
  10. dubbo学习总结三 消费端