2016-11-13 50 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); 

实际构建基于列的一个子集出了两种模式的输出模式单一每。