基于RDD的朴素贝叶斯的Spark API
朴素贝叶斯是基于每个特征都是相互独立的这个假设而成立的。朴素贝叶斯算法常常用于多分类的任务中。在spark mllib中支持多项式朴素贝叶斯和伯努利朴素贝叶斯模型。这些模型常常用于文档分类。在文档分类的任务中,每一个样本就是一个文档,每一个特征就是一个单词,单词的数值为该词的评率。而输入特征为稀疏向量。由于训练数据只使用一次所以在Spark中没有对其进行缓存。
在Spark MLlib中使用NaiveBayes来调用朴素贝叶斯的模型。它的参数有:带有标签的LabeledPoint的RDD,可选的平滑参数(默认值为1.0),可选的模型的类型(比如多项式朴素贝叶斯和伯努利朴素贝叶斯)。NaiveBayes被训练后输出NaiveBayesModel对象,用于评估和预测。
下面是一个使用朴素贝叶斯的例子:
- 数据格式
1 159:121 160:254 161:136 186:13 187:230 188:253
0 155:53 156:255 157:253 158:253 159:253
- 代码
package com.naivebeys.test
import org.apache.spark.mllib.classification.{NaiveBayes, NaiveBayesModel}
import org.apache.spark.mllib.regression.LabeledPoint
import org.apache.spark.mllib.util.MLUtils
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
object Main {
def main(args: Array[String]): Unit = {
//TODO 创建环境
val conf: SparkConf = new SparkConf().setAppName("NaiveBayesTest").setMaster("local[*]")
val sc = new SparkContext(conf)
//TODO 数据操作
//读取数据
val dataPath = "src/main/resources/Data/data/mllib/sample_libsvm_data.txt"
val data: RDD[LabeledPoint] = MLUtils.loadLibSVMFile(sc, dataPath)
//划分数据集和测试集(6:4)
val dataArr: Array[RDD[LabeledPoint]] = data.randomSplit(Array(0.6, 0.4))
//训练数据
val model: NaiveBayesModel = NaiveBayes.train(dataArr(0), lambda = 1.0, modelType = "multinomial")
//预测结果
val predictionAndLabel: RDD[(Double, Double)] = dataArr(1).map(p => (model.predict(p.features), p.label))
//计算准确率
val acc: Double = 1.0 * predictionAndLabel.filter(x => x._1 == x._2).count() / dataArr(1).count()
println(acc)
//保存模型
//model.save(sc, "path")
//拿出模型使用
//val sameModel: NaiveBayesModel = NaiveBayesModel.load(sc, "path")
//TODO 关闭环境
sc.stop()
}
}
作者:ALINGMAOMAO
出处:https://www.cnblogs.com/ALINGMAOMAO/p/17118148.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
标签:
Spark
, SparkMLlib指南
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探