【问题标题】:How do I merge or combine error rates?如何合并或合并错误率?
【发布时间】:2017-03-27 13:20:22
【问题描述】:

假设我有一个包含 9 列连续数据和 4 列分类数据的数据集。在 Matlab 中,我将列分成两组,分别对它们进行训练/测试(朴素贝叶斯),并确定连续列的错误率为 0.45,分类列的错误率为 0.33。我的问题是 - 我如何确定组合错误?

编辑 - 添加了简单的伪代码概述:

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))

但不确定这些是否正确,在这种情况下。

【问题讨论】:

  • 任何代码示例?

标签: matlab gaussian categorical-data naivebayes continuous


【解决方案1】:

这没有意义;您正在有效地构建两个独立的模型。因此,要么构建一个包含所有列的模型(可能带有 'Distribution','mvmn'),要么将两个模型合并为一个,例如

Mdl_Ens = fitcnb([NB1_Posterior; NB2_Posterior],TrainingTargets,'Distribution','normal');
NEns_cumulLoss = NEns_cumulLoss + resubLoss(Mdl_Ens);

根据每个列的子集从两个模型的输出中实际构建单个模型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多