返回 导航

Python

hangge.com

Python - 机器学习算法库Scikit-Leran使用详解5(朴素贝叶斯算法)

作者:hangge | 2022-09-02 20:28

六、朴素贝叶斯算法

1,基本介绍

(1)贝叶斯方法是以贝叶斯原理为基础,使用概率统计的知识对样本数据集进行分类。由于其有着坚实的数学基础,因此贝叶斯分类算法的误判率是很低的。
  • 贝叶斯方法的特点是结合先验概率和后验概率,即避免了只使用先验概率的主观偏见,也避免了单独使用样本信息的过拟合现象。
  • 贝叶斯分类算法在数据集较大的情况下表现出较高的准确率,同时算法本身也比较简单。

(2)朴素贝叶斯算法(Naive Bayesian algorithm) 是应用最为广泛的分类算法之一。它是在贝叶斯算法的基础上进行了相应的简化,即假定给定目标值时属性之间相互条件独立。也就是说没有哪个属性变量对于决策结果来说占有着较大的比重,也没有哪个属性变量对于决策结果占有着较小的比重。
提示:虽然朴素贝叶斯算法的特征独立在一定程度上降低了贝叶斯分类算法的分类效果,但是在实际的应用场景中,极大地简化了贝叶斯方法的复杂性。

2,使用样例

(1)下面我们以 sklearn 库中自带的鸢尾花数据集对朴素贝叶斯分类算法进行简单的应用。
根据对“似然度 P(xi|y)”计算方法的不同,sklearn 库提供的朴素贝叶斯分为如下三种:
  • 高斯分布朴素贝叶斯GaussianNB):适用于特征呈正态分布的
  • 多项式朴素贝叶斯MultinomialNB):适用于特征是多项式分布的
  • 伯努利分布朴素贝叶斯BernoulliNB):适用于二项分布
#导入 sklearn 提供的鸢尾花数据
from sklearn.datasets import load_iris
#导入 导入skleran 提供的朴素贝叶斯模型,这里选用高斯分类器
from sklearn.naive_bayes import GaussianNB
#导入skleran 提供的分割数据集的方法
from sklearn.model_selection import train_test_split
#导入pandas
import pandas as pd
  
#加载数据集
iris = load_iris()
#分割数据集训练集,测试集
x_train,x_test,y_train,y_test=train_test_split(iris['data'],iris['target'],random_state=0)
#创建一个高斯分类器模型
model=GaussianNB()
#训练模型
model.fit(x_train,y_train)
#训练后用测试集对模型进行评分
print("模型评分:",model.score(x_test,y_test))
print('-----------------------------------------------------')
  
print('测试集前5条数据特征值:')
print(pd.DataFrame(x_test).head(5))
print('-----------------------------------------------------')
print('测试集前5条数据目标值:')
print(pd.DataFrame(y_test).head(5))
print('-----------------------------------------------------')
#使用模型预测
y_predict=model.predict(x_test)
print('使用模型预测测试集前5条数据的目标值:')
print(pd.DataFrame(y_predict).head(5))

(2)运行结果如下:
评论

全部评论(0)

回到顶部