2014-12-19 80 views
2

我想在MATLAB中用樸素貝葉斯算法實現文本分類。 我有現在3個矩陣:在樸素貝葉斯的MATLAB中實現文本分類

  1. 類先驗(8個* 2細胞 - 8類名稱,爲每個類及其%來自訓練)
  2. 訓練數據:字計數矩陣 - (15000 * 9細胞 - 對於每個類,計數每個特徵(詞),最後一列是所有文檔的每個詞計數
  3. 測試數據:具有(2000 * 1)單元的矩陣 - 並且對於每個單元,代表文件

現在該怎麼辦?我想計算召回率和精確度測試集。我看了一下matlab天真貝葉斯的功能,它假設很簡單,但我不知道如何以及從哪裏開始。

感謝

回答

3

這裏是樸素貝葉斯分類的例子,

x1 = 5 * rand(100,1); 
y1 = 5 * rand(100,1); 
data1 = [x1,y1]; 
x2 = -5 * rand(100,1); 
y2 = 5 * rand(100,1); 
data2 = [x2,y2]; 
x3 = -5 * rand(100,1); 
y3 = -5 * rand(100,1); 
data3 = [x3,y3]; 
traindata = [data1(1:50,:);data2(1:50,:);data3(1:50,:)]; 
testdata = [data1(51:100,:);data2(51:100,:);data3(51:100,:)]; 
label = [repmat('x+y+',50,1);repmat('x-y+',50,1);repmat('x-y-',50,1)]; 

這是我的數據,三個班。現在的分類,

nb = NaiveBayes.fit(traindata, label); 
ClassifierOut = predict(nb,testdata); 

我認爲你應該改變你的數據矩陣,而不是單元格,但標籤是okey。

下面是結果,blue是訓練數據,其餘的是三個類的分類器輸出。

enter image description here

您還可以看到here的召回率和準確的計算多級數據。