Python 朴素贝叶斯 应用

Author: 小小梦, Created: 2017-03-28 12:42:14, Updated: 2017-03-28 12:43:01

Python 朴素贝叶斯 应用

在预示变量间相互独立的前提下,根据贝叶斯定理可以得到朴素贝叶斯这个分类方法。用更简单的话来说,一个朴素贝叶斯分类器假设一个分类的特性与该分类的其它特性不相关。举个例子,如果一个水果又圆又红,并且直径大约是 3 英寸,那么这个水果可能会是苹果。即便这些特性互相依赖,或者依赖于别的特性的存在,朴素贝叶斯分类器还是会假设这些特性分别独立地暗示这个水果是个苹果。

  • 朴素贝叶斯模型易于建造,且对于大型数据集非常有用。虽然简单,但是朴素贝叶斯的表现却超越了非常复杂的分类方法。

    贝叶斯定理提供了一种从P©、P(x)和P(x|c) 计算后验概率 P(c|x) 的方法。请看以下等式:

    img

    在这里,

    P(c|x) 是已知预示变量(属性)的前提下,类(目标)的后验概率 P© 是类的先验概率 P(x|c) 是可能性,即已知类的前提下,预示变量的概率 P(x) 是预示变量的先验概率 例子:让我们用一个例子来理解这个概念。在下面,我有一个天气的训练集和对应的目标变量“Play”。现在,我们需要根据天气情况,将会“玩”和“不玩”的参与者进行分类。让我们执行以下步骤。

    步骤1:把数据集转换成频率表。

    步骤2:利用类似“当Overcast可能性为0.29时,玩耍的可能性为0.64”这样的概率,创造 Likelihood 表格。

    img

    步骤3:现在,使用朴素贝叶斯等式来计算每一类的后验概率。后验概率最大的类就是预测的结果。

    问题:如果天气晴朗,参与者就能玩耍。这个陈述正确吗?

    我们可以使用讨论过的方法解决这个问题。于是 P(会玩 | 晴朗)= P(晴朗 | 会玩)* P(会玩)/ P (晴朗)

    我们有 P (晴朗 |会玩)= 3/9 = 0.33,P(晴朗) = 5/14 = 0.36, P(会玩)= 9/14 = 0.64

    现在,P(会玩 | 晴朗)= 0.33 * 0.64 / 0.36 = 0.60,有更大的概率。

    朴素贝叶斯使用了一个相似的方法,通过不同属性来预测不同类别的概率。这个算法通常被用于文本分类,以及涉及到多个类的问题。

  • Python代码:

#Import Library from sklearn.naive_bayes import GaussianNB    #Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset

Create SVM classification object model = GaussianNB()

there is other distribution for multinomial classes like Bernoulli Naive Bayes, Refer link

Train the model using the training sets and check score

model.fit(X, y)    #Predict Output predicted= model.predict(x_test)


More