贝叶斯分类法是统计学分类方法,假定一个属性值在给定类上的影响独立于其他属性的值,这一假定称为类条件独立性,此假定称为朴素的。
val rawdataPath = "your raw data path"
// line -> user,featureCategoricalOne,fTwo,featureCategoricalThree,label
val rawData = sc.textFile(rawdataPath)
.map(line =>{
val values = line.split("\t")
val featureVector = Vectors.dense(values.slice(1,values.length-1).map(_ .toDouble))
val label = values(values.length-1).toDouble
LabeledPoint(label, featureVector)
})
val Array(trainData, testData) = rawData.randomSplit(Array(0.8, 0.2))
val model = NaiveBayes.train(trainData, lambda = 1.0)
第一部也是读取数据,方式跟上篇博文类似。然后调用NaiveBayes方法。
最后也是metrics度量训练结果。
val metrics = getMetrics(model, testData)
def getMetrics(model: NaiveBayesModel, data: RDD[LabeledPoint]): MulticlassMetrics = {
val predictionsAndLabels = data.map(example => (model.predict(example.features), example.label)
)
new MulticlassMetrics(predictionsAndLabels)
}
项目地址:下载地址