Java實現樸素貝葉斯分類器
實驗描述:
對指定資料集進行分類問題的分析,選擇適當的分類演算法,編寫程式實現,提交程式和結果報告
資料集: balance-scale.data(見附件一) ,已有資料集構建貝葉斯分類器。
資料包括四個屬性:五個屬性值 第一個屬性值表示樣本的類別號,其他四個屬性為四個不同的特徵值。
實驗環境和程式語言:
本實驗使用的程式語言為:Java
程式設計環境為:Intellij idea
構建分類器的演算法為:樸素貝葉斯演算法
訓練的樣本個數為:625個
樣本示例:R,1,1,1,2(表示屬於R類,四各屬性值為1 1 1 2)
訓練樣本和測試樣本見附件一。
工程和測試資料下載地址:
實驗結果分析:
根據程式執行的結果如圖1-1所示,使用訓練的樣本對分類器進行檢測,分類得到295個R類(實際288個),330個L類(實際288個),0個B類(實際49個),綜合分類正確率為92.16%。可以認為分類器有較高的正確率,但是對於類B的分類還是有一定的誤差,具體原因會在思考與改進中說明。
思考與改進:
思考點:
本次實驗程式設計利用樸素貝葉斯演算法構建的分類器,雖然整體情況是擁有較高的分類正確率(92.16%),但是對訓練樣本再檢測時沒有發現一個B類樣本,出現的較大的偏差,分析原因如下:
1. B類樣本點總數很少,以至於P(yB)就遠遠小於P(yR)和P(yL
2. 觀察訓練樣本集可以發現,B類的樣本點和L類以及R類並沒有很大區別,其不具備很強的統計可分性,所以對於依賴於統計概率的貝葉斯方法無法體現出其優勢,所以導致了最終沒有樣本被分到B類中。
改進點:
本演算法在實現貝葉斯分類的時候,每一次都進行了遍歷樣本集來求出
P(a1|y1)、P(a2|y1)……P(an|yn),所以導致演算法的整體時間複雜度較高,在面臨較大的資料集時可能就會出現問題,因此可以考慮實現將已經計算過的
P(ax|yx)儲存到變數或者陣列中,在下一次計算的時候可以直接呼叫,從而可以避免再一次的遍歷訓練集來計算概率,實現時間複雜度的降低。
程式設計實現:
package com.company;
/********************************************************************************
*
*
* 資料探勘實驗,分類實驗
* 樸素貝葉斯分類
*
*訓練樣本示例格式:(R,1,5,5,4)
*/
import java.io.File;
import java.util.Scanner;
import java.util.Vector;
public class Bayes {
static Vector<String> indata = new Vector<>();//讀入資料
static Vector<int[]> catagory_R = new Vector<>();//儲存類別R的所有資料
static Vector<int[]> catagory_L = new Vector<>();//儲存類別L的所有資料
static Vector<int[]> catagory_B = new Vector<>();//儲存類別B的所有資料
public static boolean loadData(String url) {//載入測試的資料檔案
try {
Scanner in = new Scanner(new File(url));//讀入檔案
while (in.hasNextLine()) {
String str = in.nextLine();//將檔案的每一行存到str的臨時變數中
indata.add(str);//將每一個樣本點的資料追加到Vector 中
}
return true;
} catch (Exception e) { //如果出錯返回false
return false;
}
}
public static void pretreatment(Vector<String> indata) { //資料預處理,將原始資料中的每一個屬性值提取出來存放到Vector<double[]> data中
int i = 0;
String t;
while (i < indata.size()) {//取出indata中的每一行值
int[] tem = new int[4];
t = indata.get(i);
String[] sourceStrArray = t.split(",", 5);//使用字串分割函式提取出各屬性值
switch (sourceStrArray[0]) {
case "R": {
for (int j = 1; j < 5; j++) {
tem[j - 1] = Integer.parseInt(sourceStrArray[j]);
}
catagory_R.add(tem);
break;
}
case "L": {
for (int j = 1; j < 5; j++) {
tem[j - 1] = Integer.parseInt(sourceStrArray[j]);
}
catagory_L.add(tem);
break;
}
case "B": {
for (int j = 1; j < 5; j++) {
tem[j - 1] = Integer.parseInt(sourceStrArray[j]);
}
catagory_B.add(tem);
break;
}
}
i++;
}
}
public static double bayes(int[] x, Vector<int[]> catagory) {
double[] ai_y = new double[4];
int[] sum_ai = new int[4];
for (int i = 0; i < 4; i++) {
for (int j = 0; j < catagory.size(); j++) {
if (x[i] == catagory.get(j)[i])
sum_ai[i]++;
}
}
for (int i = 0; i < 4; i++) {
ai_y[i] = (double) sum_ai[i] / (double) catagory.size();
}
return ai_y[0] * ai_y[1] * ai_y[2] * ai_y[3];
}
public static void main(String[] args) {
loadData("balance-scale.data");
pretreatment(indata);
double p_yR = (double) catagory_R.size() / (double) (indata.size());//表示概率p(R)
double p_yB = (double) catagory_B.size() / (double) (indata.size());//表示概率p(B)
double p_yL = (double) catagory_L.size() / (double) (indata.size());//表示概率p(L)
int[] x = new int[4];
double x_in_R, x_in_L, x_in_B;
int sumR=0, sumL=0, sumB=0;
double correct=0;
System.out.println("請輸入樣本x格式如下:\n 1 1 1 1\n");
int r = 0;
while (r < indata.size()) {
for (int i = 0; i < 4; i++)
//讀取數字放入陣列的第i個元素
x[i] = Integer.parseInt(indata.get(r).split(",", 5)[i + 1]);
x_in_B = bayes(x, catagory_B) * p_yB;
x_in_L = bayes(x, catagory_L) * p_yL;
x_in_R = bayes(x, catagory_R) * p_yR;
if (x_in_B == Math.max(Math.max(x_in_B, x_in_L), x_in_R)) {
System.out.println("輸入的第"+r+"樣本屬於類別:B");
sumB++;
if(indata.get(r).split(",",5)[0].equals("B"))
correct++;
} else if (x_in_L == Math.max(Math.max(x_in_B, x_in_L), x_in_R)) {
System.out.println("輸入的第"+r+"樣本屬於類別:L");
sumL++;
if(indata.get(r).split(",",5)[0].equals("L"))
correct++;
} else if (x_in_R == Math.max(Math.max(x_in_B, x_in_L), x_in_R)) {
System.out.println("輸入的第"+r+"樣本屬於類別:R");
sumR++;
if(indata.get(r).split(",",5)[0].equals("R"))
correct++;
}
r++;
}
System.out.println("使用訓練樣本進行分類器檢驗得到結果統計如下:");
System.out.println("R類有:"+sumR+" 實際有R類樣本"+catagory_R.size()+"個");
System.out.println("L類有:"+sumL+" 實際有L類樣本"+catagory_L.size()+"個");
System.out.println("B類有:"+sumB+" 實際有B類樣本"+catagory_B.size()+"個");
System.out.println("分類的正確率為"+correct*1.0/indata.size()*100+"%");
}
}
(附件一)訓練樣本和測試樣本集:
B,1,1,1,1
R,1,1,1,2
R,1,1,1,3
R,1,1,1,4
R,1,1,1,5
R,1,1,2,1
R,1,1,2,2
R,1,1,2,3
R,1,1,2,4
R,1,1,2,5
R,1,1,3,1
R,1,1,3,2
R,1,1,3,3
R,1,1,3,4
R,1,1,3,5
R,1,1,4,1
R,1,1,4,2
R,1,1,4,3
R,1,1,4,4
R,1,1,4,5
R,1,1,5,1
R,1,1,5,2
R,1,1,5,3
R,1,1,5,4
R,1,1,5,5
L,1,2,1,1
B,1,2,1,2
R,1,2,1,3
R,1,2,1,4
R,1,2,1,5
B,1,2,2,1
R,1,2,2,2
R,1,2,2,3
R,1,2,2,4
R,1,2,2,5
R,1,2,3,1
R,1,2,3,2
R,1,2,3,3
R,1,2,3,4
R,1,2,3,5
R,1,2,4,1
R,1,2,4,2
R,1,2,4,3
R,1,2,4,4
R,1,2,4,5
R,1,2,5,1
R,1,2,5,2
R,1,2,5,3
R,1,2,5,4
R,1,2,5,5
L,1,3,1,1
L,1,3,1,2
B,1,3,1,3
R,1,3,1,4
R,1,3,1,5
L,1,3,2,1
R,1,3,2,2
R,1,3,2,3
R,1,3,2,4
R,1,3,2,5
B,1,3,3,1
R,1,3,3,2
R,1,3,3,3
R,1,3,3,4
R,1,3,3,5
R,1,3,4,1
R,1,3,4,2
R,1,3,4,3
R,1,3,4,4
R,1,3,4,5
R,1,3,5,1
R,1,3,5,2
R,1,3,5,3
R,1,3,5,4
R,1,3,5,5
L,1,4,1,1
L,1,4,1,2
L,1,4,1,3
B,1,4,1,4
R,1,4,1,5
L,1,4,2,1
B,1,4,2,2
R,1,4,2,3
R,1,4,2,4
R,1,4,2,5
L,1,4,3,1
R,1,4,3,2
R,1,4,3,3
R,1,4,3,4
R,1,4,3,5
B,1,4,4,1
R,1,4,4,2
R,1,4,4,3
R,1,4,4,4
R,1,4,4,5
R,1,4,5,1
R,1,4,5,2
R,1,4,5,3
R,1,4,5,4
R,1,4,5,5
L,1,5,1,1
L,1,5,1,2
L,1,5,1,3
L,1,5,1,4
B,1,5,1,5
L,1,5,2,1
L,1,5,2,2
R,1,5,2,3
R,1,5,2,4
R,1,5,2,5
L,1,5,3,1
R,1,5,3,2
R,1,5,3,3
R,1,5,3,4
R,1,5,3,5
L,1,5,4,1
R,1,5,4,2
R,1,5,4,3
R,1,5,4,4
R,1,5,4,5
B,1,5,5,1
R,1,5,5,2
R,1,5,5,3
R,1,5,5,4
R,1,5,5,5
L,2,1,1,1
B,2,1,1,2
R,2,1,1,3
R,2,1,1,4
R,2,1,1,5
B,2,1,2,1
R,2,1,2,2
R,2,1,2,3
R,2,1,2,4
R,2,1,2,5
R,2,1,3,1
R,2,1,3,2
R,2,1,3,3
R,2,1,3,4
R,2,1,3,5
R,2,1,4,1
R,2,1,4,2
R,2,1,4,3
R,2,1,4,4
R,2,1,4,5
R,2,1,5,1
R,2,1,5,2
R,2,1,5,3
R,2,1,5,4
R,2,1,5,5
L,2,2,1,1
L,2,2,1,2
L,2,2,1,3
B,2,2,1,4
R,2,2,1,5
L,2,2,2,1
B,2,2,2,2
R,2,2,2,3
R,2,2,2,4
R,2,2,2,5
L,2,2,3,1
R,2,2,3,2
R,2,2,3,3
R,2,2,3,4
R,2,2,3,5
B,2,2,4,1
R,2,2,4,2
R,2,2,4,3
R,2,2,4,4
R,2,2,4,5
R,2,2,5,1
R,2,2,5,2
R,2,2,5,3
R,2,2,5,4
R,2,2,5,5
L,2,3,1,1
L,2,3,1,2
L,2,3,1,3
L,2,3,1,4
L,2,3,1,5
L,2,3,2,1
L,2,3,2,2
B,2,3,2,3
R,2,3,2,4
R,2,3,2,5
L,2,3,3,1
B,2,3,3,2
R,2,3,3,3
R,2,3,3,4
R,2,3,3,5
L,2,3,4,1
R,2,3,4,2
R,2,3,4,3
R,2,3,4,4
R,2,3,4,5
L,2,3,5,1
R,2,3,5,2
R,2,3,5,3
R,2,3,5,4
R,2,3,5,5
L,2,4,1,1
L,2,4,1,2
L,2,4,1,3
L,2,4,1,4
L,2,4,1,5
L,2,4,2,1
L,2,4,2,2
L,2,4,2,3
B,2,4,2,4
R,2,4,2,5
L,2,4,3,1
L,2,4,3,2
R,2,4,3,3
R,2,4,3,4
R,2,4,3,5
L,2,4,4,1
B,2,4,4,2
R,2,4,4,3
R,2,4,4,4
R,2,4,4,5
L,2,4,5,1
R,2,4,5,2
R,2,4,5,3
R,2,4,5,4
R,2,4,5,5
L,2,5,1,1
L,2,5,1,2
L,2,5,1,3
L,2,5,1,4
L,2,5,1,5
L,2,5,2,1
L,2,5,2,2
L,2,5,2,3
L,2,5,2,4
B,2,5,2,5
L,2,5,3,1
L,2,5,3,2
L,2,5,3,3
R,2,5,3,4
R,2,5,3,5
L,2,5,4,1
L,2,5,4,2
R,2,5,4,3
R,2,5,4,4
R,2,5,4,5
L,2,5,5,1
B,2,5,5,2
R,2,5,5,3
R,2,5,5,4
R,2,5,5,5
L,3,1,1,1
L,3,1,1,2
B,3,1,1,3
R,3,1,1,4
R,3,1,1,5
L,3,1,2,1
R,3,1,2,2
R,3,1,2,3
R,3,1,2,4
R,3,1,2,5
B,3,1,3,1
R,3,1,3,2
R,3,1,3,3
R,3,1,3,4
R,3,1,3,5
R,3,1,4,1
R,3,1,4,2
R,3,1,4,3
R,3,1,4,4
R,3,1,4,5
R,3,1,5,1
R,3,1,5,2
R,3,1,5,3
R,3,1,5,4
R,3,1,5,5
L,3,2,1,1
L,3,2,1,2
L,3,2,1,3
L,3,2,1,4
L,3,2,1,5
L,3,2,2,1
L,3,2,2,2
B,3,2,2,3
R,3,2,2,4
R,3,2,2,5
L,3,2,3,1
B,3,2,3,2
R,3,2,3,3
R,3,2,3,4
R,3,2,3,5
L,3,2,4,1
R,3,2,4,2
R,3,2,4,3
R,3,2,4,4
R,3,2,4,5
L,3,2,5,1
R,3,2,5,2
R,3,2,5,3
R,3,2,5,4
R,3,2,5,5
L,3,3,1,1
L,3,3,1,2
L,3,3,1,3
L,3,3,1,4
L,3,3,1,5
L,3,3,2,1
L,3,3,2,2
L,3,3,2,3
L,3,3,2,4
R,3,3,2,5
L,3,3,3,1
L,3,3,3,2
B,3,3,3,3
R,3,3,3,4
R,3,3,3,5
L,3,3,4,1
L,3,3,4,2
R,3,3,4,3
R,3,3,4,4
R,3,3,4,5
L,3,3,5,1
R,3,3,5,2
R,3,3,5,3
R,3,3,5,4
R,3,3,5,5
L,3,4,1,1
L,3,4,1,2
L,3,4,1,3
L,3,4,1,4
L,3,4,1,5
L,3,4,2,1
L,3,4,2,2
L,3,4,2,3
L,3,4,2,4
L,3,4,2,5
L,3,4,3,1
L,3,4,3,2
L,3,4,3,3
B,3,4,3,4
R,3,4,3,5
L,3,4,4,1
L,3,4,4,2
B,3,4,4,3
R,3,4,4,4
R,3,4,4,5
L,3,4,5,1
L,3,4,5,2
R,3,4,5,3
R,3,4,5,4
R,3,4,5,5
L,3,5,1,1
L,3,5,1,2
L,3,5,1,3
L,3,5,1,4
L,3,5,1,5
L,3,5,2,1
L,3,5,2,2
L,3,5,2,3
L,3,5,2,4
L,3,5,2,5
L,3,5,3,1
L,3,5,3,2
L,3,5,3,3
L,3,5,3,4
B,3,5,3,5
L,3,5,4,1
L,3,5,4,2
L,3,5,4,3
R,3,5,4,4
R,3,5,4,5
L,3,5,5,1
L,3,5,5,2
B,3,5,5,3
R,3,5,5,4
R,3,5,5,5
L,4,1,1,1
L,4,1,1,2
L,4,1,1,3
B,4,1,1,4
R,4,1,1,5
L,4,1,2,1
B,4,1,2,2
R,4,1,2,3
R,4,1,2,4
R,4,1,2,5
L,4,1,3,1
R,4,1,3,2
R,4,1,3,3
R,4,1,3,4
R,4,1,3,5
B,4,1,4,1
R,4,1,4,2
R,4,1,4,3
R,4,1,4,4
R,4,1,4,5
R,4,1,5,1
R,4,1,5,2
R,4,1,5,3
R,4,1,5,4
R,4,1,5,5
L,4,2,1,1
L,4,2,1,2
L,4,2,1,3
L,4,2,1,4
L,4,2,1,5
L,4,2,2,1
L,4,2,2,2
L,4,2,2,3
B,4,2,2,4
R,4,2,2,5
L,4,2,3,1
L,4,2,3,2
R,4,2,3,3
R,4,2,3,4
R,4,2,3,5
L,4,2,4,1
B,4,2,4,2
R,4,2,4,3
R,4,2,4,4
R,4,2,4,5
L,4,2,5,1
R,4,2,5,2
R,4,2,5,3
R,4,2,5,4
R,4,2,5,5
L,4,3,1,1
L,4,3,1,2
L,4,3,1,3
L,4,3,1,4
L,4,3,1,5
L,4,3,2,1
L,4,3,2,2
L,4,3,2,3
L,4,3,2,4
L,4,3,2,5
L,4,3,3,1
L,4,3,3,2
L,4,3,3,3
B,4,3,3,4
R,4,3,3,5
L,4,3,4,1
L,4,3,4,2
B,4,3,4,3
R,4,3,4,4
R,4,3,4,5
L,4,3,5,1
L,4,3,5,2
R,4,3,5,3
R,4,3,5,4
R,4,3,5,5
L,4,4,1,1
L,4,4,1,2
L,4,4,1,3
L,4,4,1,4
L,4,4,1,5
L,4,4,2,1
L,4,4,2,2
L,4,4,2,3
L,4,4,2,4
L,4,4,2,5
L,4,4,3,1
L,4,4,3,2
L,4,4,3,3
L,4,4,3,4
L,4,4,3,5
L,4,4,4,1
L,4,4,4,2
L,4,4,4,3
B,4,4,4,4
R,4,4,4,5
L,4,4,5,1
L,4,4,5,2
L,4,4,5,3
R,4,4,5,4
R,4,4,5,5
L,4,5,1,1
L,4,5,1,2
L,4,5,1,3
L,4,5,1,4
L,4,5,1,5
L,4,5,2,1
L,4,5,2,2
L,4,5,2,3
L,4,5,2,4
L,4,5,2,5
L,4,5,3,1
L,4,5,3,2
L,4,5,3,3
L,4,5,3,4
L,4,5,3,5
L,4,5,4,1
L,4,5,4,2
L,4,5,4,3
L,4,5,4,4
B,4,5,4,5
L,4,5,5,1
L,4,5,5,2
L,4,5,5,3
B,4,5,5,4
R,4,5,5,5
L,5,1,1,1
L,5,1,1,2
L,5,1,1,3
L,5,1,1,4
B,5,1,1,5
L,5,1,2,1
L,5,1,2,2
R,5,1,2,3
R,5,1,2,4
R,5,1,2,5
L,5,1,3,1
R,5,1,3,2
R,5,1,3,3
R,5,1,3,4
R,5,1,3,5
L,5,1,4,1
R,5,1,4,2
R,5,1,4,3
R,5,1,4,4
R,5,1,4,5
B,5,1,5,1
R,5,1,5,2
R,5,1,5,3
R,5,1,5,4
R,5,1,5,5
L,5,2,1,1
L,5,2,1,2
L,5,2,1,3
L,5,2,1,4
L,5,2,1,5
L,5,2,2,1
L,5,2,2,2
L,5,2,2,3
L,5,2,2,4
B,5,2,2,5
L,5,2,3,1
L,5,2,3,2
L,5,2,3,3
R,5,2,3,4
R,5,2,3,5
L,5,2,4,1
L,5,2,4,2
R,5,2,4,3
R,5,2,4,4
R,5,2,4,5
L,5,2,5,1
B,5,2,5,2
R,5,2,5,3
R,5,2,5,4
R,5,2,5,5
L,5,3,1,1
L,5,3,1,2
L,5,3,1,3
L,5,3,1,4
L,5,3,1,5
L,5,3,2,1
L,5,3,2,2
L,5,3,2,3
L,5,3,2,4
L,5,3,2,5
L,5,3,3,1
L,5,3,3,2
L,5,3,3,3
L,5,3,3,4
B,5,3,3,5
L,5,3,4,1
L,5,3,4,2
L,5,3,4,3
R,5,3,4,4
R,5,3,4,5
L,5,3,5,1
L,5,3,5,2
B,5,3,5,3
R,5,3,5,4
R,5,3,5,5
L,5,4,1,1
L,5,4,1,2
L,5,4,1,3
L,5,4,1,4
L,5,4,1,5
L,5,4,2,1
L,5,4,2,2
L,5,4,2,3
L,5,4,2,4
L,5,4,2,5
L,5,4,3,1
L,5,4,3,2
L,5,4,3,3
L,5,4,3,4
L,5,4,3,5
L,5,4,4,1
L,5,4,4,2
L,5,4,4,3
L,5,4,4,4
B,5,4,4,5
L,5,4,5,1
L,5,4,5,2
L,5,4,5,3
B,5,4,5,4
R,5,4,5,5
L,5,5,1,1
L,5,5,1,2
L,5,5,1,3
L,5,5,1,4
L,5,5,1,5
L,5,5,2,1
L,5,5,2,2
L,5,5,2,3
L,5,5,2,4
L,5,5,2,5
L,5,5,3,1
L,5,5,3,2
L,5,5,3,3
L,5,5,3,4
L,5,5,3,5
L,5,5,4,1
L,5,5,4,2
L,5,5,4,3
L,5,5,4,4
L,5,5,4,5
L,5,5,5,1
L,5,5,5,2
L,5,5,5,3
L,5,5,5,4
B,5,5,5,5
相關推薦
Java實現樸素貝葉斯分類器
實驗描述: 對指定資料集進行分類問題的分析,選擇適當的分類演算法,編寫程式實現,提交程式和結果報告 資料集: balance-scale.data(見附件一) ,已有資料集構建貝葉斯分類器。 資料包括四個屬性:五個屬性值 第一個屬性值表示樣本的類別號,其他四個屬性為四個不同
【機器學習實踐】用Python實現樸素貝葉斯分類器
閱讀學習了《機器學習》第7章的貝葉斯分類器後,為了加深理解和加強python的程式碼能力,因此嘗試使用Python實現樸素貝葉斯分類器,由於初學Python的緣故,程式碼的一些實現方法可能比較繁瑣,可閱讀性有待提高。程式碼如下: #import numpy a
機器學習及python實現——樸素貝葉斯分類器
問題引入 考慮構建一個垃圾郵件分類器,通過給定的垃圾郵件和非垃圾郵件的資料集,通過機器學習構建一個預測一個新的郵件是否是垃圾郵件的分類器。郵件分類器是通常的文字分類器中的一種。 樸素貝葉斯方法 貝葉斯假設 假設當前我們已經擁有了一批標識有是垃圾郵
Python實現樸素貝葉斯分類器
# -*-coding:utf-8-*- ''' 樸素貝葉斯演算法 ''' from __future__ import division global className className = "class" def calc_class(trai
OpenCV實現樸素貝葉斯分類器診斷病情
貝葉斯定理由英國數學家托馬斯.貝葉斯(Thomas Baves)在1763提出,因此得名貝葉斯定理。貝葉斯定理也稱貝葉斯推理,是關於隨機事件的條件概率的一則定理。 對於兩個事件A和B,事件A發生則B也
機器學習:貝葉斯分類器(二)——高斯樸素貝葉斯分類器代碼實現
mod ces 數據 大於等於 即使 平均值 方差 很多 mode 一 高斯樸素貝葉斯分類器代碼實現 網上搜索不調用sklearn實現的樸素貝葉斯分類器基本很少,即使有也是結合文本分類的多項式或伯努利類型,因此自己寫了一遍能直接封裝的高斯類型NB分類器,當然與真正的源碼相
分類——樸素貝葉斯分類器以及Python實現
核心思想: 根據訓練資料獲取模型的後驗概率,對應後驗概率越大的類即預測類。 演算法簡介: 模型: 先驗概率:p(y=Ck)p(y=Ck) 條件概率:p(X=x|y=Ck)p(X=x|y=Ck) 後驗概率:p(y=Ck|X=x)p(y=Ck|X=
機器學習實戰——python實現簡單的樸素貝葉斯分類器
基礎公式 貝葉斯定理:P(A|B) = P(B|A)*P(A)/P(B) 假設B1,B2…Bn彼此獨立,則有:P(B1xB2x…xBn|A) = P(B1|A)xP(B2|A)x…xP(Bn|A) 資料(虛構) A1 A2 A3 A4 A5 B
機器學習:樸素貝葉斯分類器程式碼實現,決策函式非向量化方式
文章目錄 樸素貝葉斯離散型的演算法描述: 程式碼實現: 實現一個NaiveBayes的基類,以便擴充套件: 實現離散型樸素貝葉斯MultiomialNB類: 實現從檔案中讀取資料: 測試資料: 程式碼測試:
樸素貝葉斯分類器:MATLAB工具箱實現
MATLAB工具箱的statistic toolbox中有naivebayes的類,可以直接使用。 使用預設的高斯分佈和混淆矩陣: >> load fisheriris >> O1 = fitNaiveBayes(meas,species); 生成
樸素貝葉斯分類器(Python實現)
基本思想: 樸素貝葉斯分類器,在當給出了特徵向量w情況下,分類為ci的條件概率p(ci | w)。 利用貝葉斯公式:p(ci | w) = p(w | ci) * p(ci) / p(w),可以完成轉化,觀察公式可以發現分母p(w)都一樣,所以只要比較分子的
4.樸素貝葉斯分類器實現-matlab
實現樸素貝葉斯分類器,並且根據李航《統計機器學習》第四章提供的資料訓練與測試,結果與書中一致 分別實現了樸素貝葉斯以及帶有laplace平滑的樸素貝葉斯 %書中例題實現樸素貝葉斯 %特徵1的取值集合 A1=[1;2;3]; %特徵2的取值集合 A2=[4;5;6];%S M L AValue
樸素貝葉斯分類器簡單實現文字情感分析
樸素貝葉斯的一般過程: ① 收集資料:可以使用任何方法。 ② 準備資料:需要數值型或者布林型資料。 ③ 分析資料:有大量特徵時,繪製特徵作用不大,此時使用直方圖效果更好。 ④ 訓練演算法:計算不同的獨立特徵的條件概率。 ⑤ 測試演算法:計算錯誤率。 ⑥ 使用演算法:一個常見
機器學習之樸素貝葉斯分類器實現
問題如下 比如:有如下的需求,要判斷某一句英語是不是侮辱性語句 分析思路 對於機器來說,可能不容易分辨出某一句話是不是侮辱性的句子,但是機器可以機械的進行分析,何為機械的進行分析,就是判斷某一個句子中侮辱性的單詞是不是達到一定數量(當然這
樸素貝葉斯分類器實現成績等級預測
最近在學習機器學習相關的演算法,希望能通過筆記和做的小的Demo來鞏固一下所學的知識和演算法。 今天來講解一下樸素貝葉斯分類器,並利用樸素貝葉斯做一個簡單的成績等級預測。 貝葉斯決策論:在所有相關概率都已知的理想情形下,貝葉斯決策論考慮如何基於這些概
貝葉斯篇:貝葉斯的概率推到,樸素貝葉斯分類器及Python實現
在瞭解貝葉演算法前:要有一定的概率與數理統計基礎以及注意事項 條件概率 首先,理解這兩個公式的前提是理解條件概率,因此先複習條件概率。 P(A|B)=P(AB)P(B)P(A|B)=P(AB)P(B) 那麼由條件概率出發,看一下變形出來的乘法公式:
【機器學習算法-python實現】掃黃神器-樸素貝葉斯分類器的實現
github border release Language 出現 span bus pytho rds 版權聲明:本文為博主原創文章,未經博主同意不得轉載。 https://blog.c
javascript實現樸素貝葉斯分類與決策樹ID3分類
.com 訓練集 this ice map ive sum length roc 今年畢業時的畢設是有關大數據及機器學習的題目。因為那個時間已經步入前端的行業自然選擇使用JavaScript來實現其中具體的算法。雖然JavaScript不是做大數據處理的最佳語言,相比還沒有
機器學習系列——樸素貝葉斯分類器(二)
表示 -h line log ima 條件 code 樸素貝葉斯 spa 貝葉斯定理: 其中: 表示事件B已經發生的前提下,事件A發生的概率,叫做事件B發生下事件A的條件概率。其基本求解公式為:。 機器學習系列——樸素貝葉斯分類器(二)
樸素貝葉斯分類器的應用 Naive Bayes classifier
upload dia get 等號 分布 eat 實現 維基 5.5 一、病人分類的例子 讓我從一個例子開始講起,你會看到貝葉斯分類器很好懂,一點都不難。 某個醫院早上收了六個門診病人,如下表。 癥狀 職業 疾病 打噴嚏 護士 感冒 打噴嚏