sparkmllib scala NaiveBayes Demo
定義?
貝葉斯方法
貝葉斯方法是以貝葉斯原理為基礎(chǔ),使用概率統(tǒng)計的知識對樣本數(shù)據(jù)集進(jìn)行分類。由于其有著堅實的數(shù)學(xué)基礎(chǔ),貝葉斯分類算法的誤判率是很低的。貝葉斯方法的特點(diǎn)是結(jié)合先驗概率和后驗概率,即避免了只使用先驗概率的主觀偏見,也避免了單獨(dú)使用樣本信息的過擬合現(xiàn)象。貝葉斯分類算法在數(shù)據(jù)集較大的情況下表現(xiàn)出較高的準(zhǔn)確率,同時算法本身也比較簡單。
樸素貝葉斯算法
樸素貝葉斯算法(Naive Bayesian algorithm) 是應(yīng)用最為廣泛的分類算法之一。
樸素貝葉斯方法是在貝葉斯算法的基礎(chǔ)上進(jìn)行了相應(yīng)的簡化,即假定給定目標(biāo)值時屬性之間相互條件獨(dú)立。也就是說沒有哪個屬性變量對于決策結(jié)果來說占有著較大的比重,也沒有哪個屬性變量對于決策結(jié)果占有著較小的比重。雖然這個簡化方式在一定程度上降低了貝葉斯分類算法的分類效果,但是在實際的應(yīng)用場景中,極大地簡化了貝葉斯方法的復(fù)雜性。
?優(yōu)缺點(diǎn)
優(yōu)點(diǎn)
樸素貝葉斯算法假設(shè)了數(shù)據(jù)集屬性之間是相互獨(dú)立的,因此算法的邏輯性十分簡單,并且算法較為穩(wěn)定,當(dāng)數(shù)據(jù)呈現(xiàn)不同的特點(diǎn)時,樸素貝葉斯的分類性能不會有太大的差異。換句話說就是樸素貝葉斯算法的健壯性比較好,對于不同類型的數(shù)據(jù)集不會呈現(xiàn)出太大的差異性。當(dāng)數(shù)據(jù)集屬性之間的關(guān)系相對比較獨(dú)立時,樸素貝葉斯分類算法會有較好的效果。?
缺點(diǎn)
屬性獨(dú)立性的條件同時也是樸素貝葉斯分類器的不足之處。數(shù)據(jù)集屬性的獨(dú)立性在很多情況下是很難滿足的,因為數(shù)據(jù)集的屬性之間往往都存在著相互關(guān)聯(lián),如果在分類過程中出現(xiàn)這種問題,會導(dǎo)致分類的效果大大降低。
數(shù)據(jù)集?
0,0 0 0 0 0,0 0 0 1 1,1 0 0 0 1,2 1 0 0 1,2 2 1 0 0,2 2 1 1 1,1 2 1 1 0,0 1 0 0 1,0 2 1 0 1,2 1 1 0 1,0 1 1 1 1,1 1 0 1 1,1 0 1 0 0,2 1 0 1?demo
object NaiveBayesdemo {def main(args: Array[String]): Unit = {val conf = new SparkConf().setAppName("NaiveBayes").setMaster("local[2]")val sc = new SparkContext(conf)val data = sc.textFile("demo.txt")val parsedData = data.map{ line =>val parts = line.split(',')LabeledPoint(parts(0).toDouble, Vectors.dense(parts(1).split(' ').map(_.toDouble)))}val Array(traning,test) = parsedData.randomSplit(Array(0.6, 0.4), seed = 11L)val model = NaiveBayes.train(traning,lambda = 1.0,modelType = "multinomial")val predictionAndLabel = test.map(p => (model.predict(p.features),p.label))val tuples = predictionAndLabel.take(20)for (i <- 0 to tuples.length - 1){println(tuples(i)._1 + "\t" + tuples(i)._2)}println("Predictionof (0.0, 2.0, 0.0, 1.0):"+model.predict(Vectors.dense(0.0,2.0,0.0,1.0)))} }?
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的sparkmllib scala NaiveBayes Demo的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Sparkmllib scala KME
- 下一篇: sparkmllib scala GBD