即之前写了朴素贝叶斯算法的理论部分(https://blog.csdn.net/weixin_41899207/article/details/105714493)
现在找些例子与代码总结一下。
例题1.
试由下表的训练数据学习一个朴素贝叶斯分类器并确定x=(2,S)T的类标记y。表中X(1)和X(2)为特征,取值的集合分别为A1={1,2,3},A2={S,M,L},Y为类标记,Y属于C={1,-1}。
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| X(1) | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 3 | 3 | 3 | 3 | 3 |
| X(2) | S | M | M | S | S | S | M | M | S | S | S | M | M | S | S |
| Y | -1 | -1 | 1 | 1 | -1 | -1 | -1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | -1 |
P(Y=1)=9/15,P(Y=-1)=6/15 *Y行有9个1,6个-1.

对于给定的x=(2,S)T计算:

因为
最大,所以y=-1。
2.三种不同的朴素贝叶斯算法
2.1 多项式朴素贝叶斯
多项式朴素贝叶斯(Multinomial Naive Bayes)特征值符合多项式分布,多用于高维度向量分类,即样本特征为多元离散值,因此最常用于文章分类。
2.2伯努利朴素贝叶斯
伯努利朴素贝叶斯(Bernoulli Naive Bayes)特征值符合伯努利分布,针对布尔类型特征值的向量做分类,即样本特征为二元离散值,或者为稀疏的多元离散值。
2.3高斯朴素贝叶斯
高斯朴素贝叶斯(Gaussian Naive Bayes)特征符合高斯分布,多用于特征值为连续值,可以利用高斯概率密度公式进行分类拟合。
from sklearn.naive_bayes import MultinomialNB
from sklearn.naive_bayes import BernoulliNB
from sklearn.naive_bayes import GaussianNB
3. 代码
# 朴素贝叶斯引入图例
from matplotlib.font_manager import FontProperties
import matplotlib.pyplot as plt
from sklearn import datasets
%matplotlib inline
font = FontProperties(fname='/Library/Fonts/Heiti.ttc')
iris_data = datasets.load_iris()
X = iris_data.data[0:100, [0, 1]]
y = iris_data.target[0:100]
plt.scatter(X[0:50, [0]], X[0:50, [1]], color='r',
s=50, marker='o', label='山鸢尾')
plt.scatter(X[50:100, [0]], X[50:100, [1]],
color='b', s=50, marker='x', label='杂色鸢尾')
plt.xlabel('花瓣长度(cm)', fontproperties=font)
plt.ylabel('花瓣宽度(cm)', fontproperties=font)
plt.legend(prop=font)
plt.show()
本文通过例题详细介绍了如何使用朴素贝叶斯算法进行分类,包括如何根据训练数据构建朴素贝叶斯分类器,并探讨了三种不同类型的朴素贝叶斯算法:多项式朴素贝叶斯、伯努利朴素贝叶斯和高斯朴素贝叶斯,分别适用于离散值、布尔特征和连续值的分类问题。

4001

被折叠的 条评论
为什么被折叠?



