我正在尝试对一些实时数据应用朴素贝叶斯算法。我了解贝叶斯的规则,但不确定如何在我的数据上实现。我的数据如下所示。我的数据总共有两个标签,分别是“ok”和“fraud”,测试数据标记为“unkn”。我需要通过应用朴素贝叶斯算法将所有标记为“unkn”的记录分类为“ok”或“fraud”。我该如何实现这一点?请有人帮助我。
1,v1,p1,182,1665,unkn2,v2,p1,3072,8780,ok3,v3,p1,20393,76990,ok4,v4,p1,112,1100,fraud5,v3,p1,6164,20260,unkn6,v5,p2,104,1155,ok7,v6,p2,350,5680,unkn8,v7,p2,200,4010,ok9,v8,p2,233,2855,unkn10,v9,p2,118,1175,unkn
贝叶斯规则如下:
未知记录为“ok”的后验概率 = “ok”的先验概率 * 已知为“ok”的未知记录的可能性。
未知记录为“fraud”的后验概率 = “fraud”的先验概率 * 已知为“fraud”的未知记录的可能性。
回答:
我假设行1,v1,p1,182,1665,unkn
的解释如下:
1
,v1
= 一些标识符p1,182,1665
= 数据点的特征unkn
= 标签,在这种情况下是未知
基于这种标记,你的训练数据包括所有标记为ok
或fraud
的行,而你的测试数据是剩下的部分。你需要计算先验概率和条件可能性:
ok
的先验概率是训练数据中ok
示例的比例。同理适用于fraud
- 对于每个特征
f
,如v1
或p1
,已知为ok
的可能性是训练数据中包含该特征的ok
示例的比例。例如,p1
在4个ok
示例中有2个,概率为0.5。
对于每个示例,将步骤2中计算的所有特征的概率相乘。将结果乘以步骤1中的概率,以获得你的示例属于特定类的(联合)概率。
注意事项:
- 将概率相乘最终会导致下溢。你可能希望改为加那些概率的对数。
- 我描述的算法仅适用于离散值特征。你似乎有上面的连续值特征(例如
182
),需要转换为离散值(例如通过分箱)或者你需要想出其他方法来估计步骤2中的条件概率。谷歌搜索连续值朴素贝叶斯