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平滑技术之类的平滑技术来克服它。在实时数据集中假设独立的预测变量是危险的。
朴素贝叶斯的应用
- 数据组的多类预测
- 推荐系统
- 文字分类
- 情绪分析
- 垃圾邮件过滤