標籤:資料採礦 機器學習 naivebayes 垃圾郵件
演算法簡介
NBC是應用最廣的分類演算法之一。樸素貝葉斯模型發源於古典數學理論,有著堅實的數學基礎,以及穩定的分類效率。同時,NBC模型所需估計的參數很少,對缺失資料不太敏感,演算法也比較簡單。
演算法假設
給定目標值時屬性之間互相條件獨立。
演算法輸入
訓練資料 T={(x1,y1),(x2,y2),……,(xn,yn)}
待分類資料x0=(x0(1),x0(2),……,x0(n))T
演算法輸出
待分類資料x0的分類結果y0∈{c1,c2,……,ck}
演算法思想
weka運行
以weather.nominal.arff為例運行結果部分如下:
從結果中可以看出,有兩個分類,因此產生一個2*2的混淆矩陣。
函數調用代碼
//讀入樣本
Filefile= new File("F:\\Program Files (x86)\\Weka-3-7\\data\\weather.nominal.arff");
ArffLoaderloader = newArffLoader();
loader.setFile(file);
ins= loader.getDataSet();
ins.setClassIndex(ins.numAttributes()-1);
//初始化分類器並訓練
cfs= (Classifier)Class.forName("weka.classifiers.bayes.NaiveBayes").newInstance();
cfs.buildClassifier(ins);
//擷取分類器結果
testingEvaluation.evaluateModelOnceAndRecordPrediction(cfs,testInst);
//列印分類結果
System.out.println("分類器的正確率:"+ (1-testingEvaluation.errorRate()));
運行結果如下:
分類器的正確率:0.9583333333333334
演算法應用
?垃圾郵件過濾系統?分類web網頁?分類文本
垃圾郵件過濾系統可以參考論文:周威成 馬素霞 齊林海,一種基於機器學習的垃圾郵件智能過濾方法。
原創文章,轉載請註明出處,謝謝。