sparkmllib scala NaiveBayes Demo
定義?
貝葉斯方法
貝葉斯方法是以貝葉斯原理為基礎,使用概率統計的知識對樣本數據集進行分類。由于其有著堅實的數學基礎,貝葉斯分類算法的誤判率是很低的。貝葉斯方法的特點是結合先驗概率和后驗概率,即避免了只使用先驗概率的主觀偏見,也避免了單獨使用樣本信息的過擬合現象。貝葉斯分類算法在數據集較大的情況下表現出較高的準確率,同時算法本身也比較簡單。
樸素貝葉斯算法
樸素貝葉斯算法(Naive Bayesian algorithm) 是應用最為廣泛的分類算法之一。
樸素貝葉斯方法是在貝葉斯算法的基礎上進行了相應的簡化,即假定給定目標值時屬性之間相互條件獨立。也就是說沒有哪個屬性變量對于決策結果來說占有著較大的比重,也沒有哪個屬性變量對于決策結果占有著較小的比重。雖然這個簡化方式在一定程度上降低了貝葉斯分類算法的分類效果,但是在實際的應用場景中,極大地簡化了貝葉斯方法的復雜性。
?優缺點
優點
樸素貝葉斯算法假設了數據集屬性之間是相互獨立的,因此算法的邏輯性十分簡單,并且算法較為穩定,當數據呈現不同的特點時,樸素貝葉斯的分類性能不會有太大的差異。換句話說就是樸素貝葉斯算法的健壯性比較好,對于不同類型的數據集不會呈現出太大的差異性。當數據集屬性之間的關系相對比較獨立時,樸素貝葉斯分類算法會有較好的效果。?
缺點
屬性獨立性的條件同時也是樸素貝葉斯分類器的不足之處。數據集屬性的獨立性在很多情況下是很難滿足的,因為數據集的屬性之間往往都存在著相互關聯,如果在分類過程中出現這種問題,會導致分類的效果大大降低。
數據集?
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位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的sparkmllib scala NaiveBayes Demo的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Sparkmllib scala KME
- 下一篇: sparkmllib scala GBD