Python中的朴素贝叶斯算法

时间:2020-02-23 14:42:19  来源:igfitidea点击:

在我们的一系列机器学习算法中,今天我们将重点关注Python中的朴素贝叶斯算法。

什么是朴素贝叶斯算法?

"朴素贝叶斯"是一种监督分类机器学习算法。
它是基于以下定理的分类算法

  • 贝叶斯定理
  • 最大后验假设

让我们看一下下面的公式

朴素贝叶斯–贝叶斯定理

上面的公式表示贝叶斯定理,它确定了给定证据B(观察到的数据示例B)时A的概率。

因此,在朴素贝叶斯中,我们确定特定假设对于数据集的特定证据成立的概率。

现在让我们了解下一部分中的假设。

朴素贝叶斯的假设

朴素贝叶斯定理假设数据特征/属性对给定类或者集合的影响独立于数据集的其他数据变量/属性的值。

也就是说,数据变量在概率类别上的影响是独立的。
这个概念被称为"类别条件独立"。

在Python中实现朴素贝叶斯

最初,我们使用pandas.read_csv()函数将数据集加载到环境中。

您可以在此处找到示例中使用的数据集。

此外,我们已使用" train_test_split()函数"将数据集分为训练和测试数据集。

例:

import pandas as pd
import numpy as np
data = pd.read_csv("bank-loan.csv") # dataset
loan = data.copy()

from sklearn.model_selection import train_test_split 
X = loan.drop(['default'],axis=1) 
Y = loan['default'].astype(str)
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=.20, random_state=0)

# Naive Bayes Algorithm
from sklearn.naive_bayes import GaussianNB
Naive = GaussianNB().fit(X_train,Y_train)
target = Naive.predict(X_test)
print(target)

其中我们使用" GaussianNB()"应用" Gaussian Naive Bayes"定理来预测客户是否是贷款违约者(0)或者不是(1)。

输出:

array(['0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '1',
     '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0',
     '0', '0', '0', '0', '1', '0', '0', '0', '1', '1', '0', '0', '1',
     '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
     '0', '1', '0', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0',
     '1', '0', '1', '0', '0', '1', '0', '0', '1', '0', '0', '0', '1',
     '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0',
     '1', '0', '1', '0', '0', '0', '0', '1', '0', '0', '0', '1', '0',
     '1', '0', '1', '0', '0', '0', '0', '0', '0', '0', '1', '0', '1',
     '0', '0', '1', '1', '0', '0', '0', '0', '1', '0', '1', '0', '0',
     '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0'], dtype='<U1')

朴素贝叶斯算法的类型

朴素贝叶斯可以进一步分为以下几种类型:

  • 伯努利·朴素·贝叶斯
  • 多项式朴素贝叶斯
  • 高斯朴素贝叶斯

在下一节中,让我们详细了解其中的每一个。

1.伯努利·朴素贝叶斯

它基于伯努利数据分布。
这对于"二进制分类"很有用,即当结果仅取决于两个响应时。

2.多项式朴素贝叶斯

它是一种离散分类算法,在输出表示一项出现的频率时使用。

3.高斯朴素贝叶斯

在高斯朴素贝叶斯中,我们假设连续变量遵循数据的正态分布。
其中均值和方差是使用最大似然法计算的。

朴素贝叶斯的优势

  • 健壮的缺失或者空值。

  • 由于该算法使用简单的概率方法,因此不太适合过度拟合。

  • 在多类分类中表现良好。

  • 更快的结果,易于应用。

朴素贝叶斯的局限性

  • 零频率问题-当算法为数据集分配零概率时出现。
    可以使用诸如Laplace平滑技术之类的平滑技术来克服它。

  • 在实时数据集中假设独立的预测变量是危险的。

朴素贝叶斯的应用

  • 数据组的多类预测
  • 推荐系统
  • 文字分类
  • 情绪分析
  • 垃圾邮件过滤