2016-11-13 49 views
-1

比方說,我有一個數據集有9個連續的數據列和4個分類數據列。在Matlab中,我的列分成兩組並在其上做訓練/測試(樸素貝葉斯)分開,並確定該連續列具有0.45錯誤率和分類列具有一個錯誤0.33。我的問題是 - 我如何確定組合錯誤?如何合併或合併錯誤率?

EDIT - 簡單的僞代碼概述加入:

for x = 1:num_iterations 
    Mdl_NB1 = fitcnb(TrainingSet_Con,TrainingTargets,'Distribution','normal'); 
    Mdl_NB2 = fitcnb(TrainingSet_Dis,TrainingTargets,'Distribution','mn'); 
    [NB1_label,NB1_Posterior,NB1_Cost] = predict(Mdl_NB1,TestPoint_Con); 
    [NB2_label,NB2_Posterior,NB2_Cost] = predict(Mdl_NB2,TestPoint_Dis); 
    NB1_cumulLoss = NB1_cumulLoss + resubLoss(Mdl_NB1); 
    NB2_cumulLoss = NB2_cumulLoss + resubLoss(Mdl_NB2); 
end 
NB1_avg_score = NB1_cumulLoss/num_iterations 
NB2_avg_score = NB2_cumulLoss/num_iterations 
total_avg_score = ??? 

三個明顯的選擇,原則上,有:

  • (A + B)/ 2
  • A * B
  • (A *(CountA/TotalCount))+(B *(CountB/TotalCount))

但在這種情況下,不確定這些是否正確。

+0

任何示例代碼? – Marcin

+0

請參閱編輯。 – swabygw

回答

0

這沒有意義;你正在有效地建立兩個獨立的模型。所以,無論是建立與所有列(可能與'Distribution','mvmn')一個模型或兩個模型的東西,如

合併成一個
Mdl_Ens = fitcnb([NB1_Posterior; NB2_Posterior],TrainingTargets,'Distribution','normal'); 
NEns_cumulLoss = NEns_cumulLoss + resubLoss(Mdl_Ens); 

實際構建基於列的一個子集出了兩種模式的輸出模式單一每。