如何使用朴素贝叶斯算法对未知记录进行分类

时间:2012-11-16 11:55:05

标签: c++ c machine-learning data-mining

我正在尝试在一些实时数据上实现朴素贝叶斯算法。我知道贝叶斯的规则,但我不知道如何实现我的数据。我的数据如下所示。总共有2个标签我的数据是好的,欺诈和测试数据标记为unkn。我需要通过应用Naive Bayes算法将所有unkn记录分类为ok或欺诈。我如何实现这一目标?请有人帮助我。

1,v1,p1,182,1665,unkn
2,v2,p1,3072,8780,ok
3,v3,p1,20393,76990,ok
4,v4,p1,112,1100,fraud
5,v3,p1,6164,20260,unkn
6,v5,p2,104,1155,ok
7,v6,p2,350,5680,unkn
8,v7,p2,200,4010,ok
9,v8,p2,233,2855,unkn
10,v9,p2,118,1175,unkn

贝叶斯规则: -

unkn的后验概率是正确的=先验概率ok * unkn的可能性给出了确定。

欺诈的后验概率=欺诈的先前可能性*欺诈的可能性。

1 个答案:

答案 0 :(得分:3)

我假设行1,v1,p1,182,1665,unkn被解释为:

  • 1v1 =一些标识符
  • p1,182,1665 =数据点的功能
  • unkn =标签,在这种情况下为未知

考虑到这一点,您的训练数据包含标有okfraud的所有行,您的测试数据是其余的。您必须计算先验和条件可能性:

  1. ok的先验概率是训练数据中ok个例子的比例。这同样适用于fraud
  2. 对于每个功能f,例如v1p1,其给定的可能性是包含该功能的训练数据中ok个示例的比例。例如,p1包含在4个ok示例中的2个中,概率为0.5。
  3. 对于每个示例,将您为步骤2中所有要素计算的概率相乘。将结果乘以步骤1中的概率,以获得属于特定类的示例的(联合)概率。

    注意事项:

    • 将概率相乘会最终导致下溢。您可能希望添加这些概率的日志。
    • 我描述的算法仅适用于离散值特征。您在上面看到的连续值特征(例如182)需要转换为离散(例如通过分级),或者您需要在步骤2中提出一些估算条件概率的其他方法.Google for连续值的朴素贝叶斯