朴素贝叶斯分类器

朴素贝叶斯分类器基于贝叶斯定理。
贝叶斯定理( Thomas Bayes) ,用来描述两个条件概率之间的关系,比如 P(A|B) 和 P(B|A)。按照乘法法则,可以立刻导出:P(A∩B) = P(A)*P(B|A)=P(B)*P(A|B)。如上公式也可变形为:P(B|A) = P(A|B)*P(B) / P(A)。
通常,事件A在事件B(发生)的条件下的概率,与事件B在事件A的条件下的概率是不一样的;然而,这两者是有确定的关系,贝叶斯法则就是这种关系的陈述。
其中P(A|B)是在B发生的情况下A发生的可能性。
在贝叶斯法则中,每个名词都有约定俗成的名称:

P(A)是A的先验概率或边缘概率。之所以称为”先验”是因为它不考虑任何B方面的因素。
P(A|B)是已知B发生后A的条件概率,也由于得自B的取值而被称作A的后验概率。
P(B|A)是已知A发生后B的条件概率,也由于得自A的取值而被称作B的后验概率。
P(B)是B的先验概率或边缘概率,也作标准化常量(normal。zed consnt)。
这里写图片描述
何为朴素?
即各个特征相互独立。
理论方面就不累述了,直接写用法。
同样用iris 数据集进行训练:

高斯模型
有些特征可能是连续型变量,比如说人的身高,物体的长度,这些特征可以转换成离散型的值,比如如果身高在160cm以下,特征值为1;在160cm和170cm之间,特征值为2;在170cm之上,特征值为3。也可以这样转换,将身高转换为3个特征,分别是f1、f2、f3,如果身高是160cm以下,这三个特征的值分别是1、0、0,若身高在170cm之上,这三个特征的值分别是0、0、1。不过这些方式都不够细腻,高斯模型可以解决这个问题。高斯模型假设这些一个特征的所有属于某个类别的观测值符合高斯分布。

多项式模型
该模型常用于文本分类,特征是单词,值是单词的出现次数。考虑重复词语的情况,也就是说,重复的词语我们视为其出现多次。
P((“代开”,“发票”,“增值税”,“发票”,“正规”,“发票”)|S)
=P(“代开””|S)P(“发票”|S)P(“增值税”|S)P(“发票”|S)P(“正规”|S)P(“发票”|S)
=P(“代开””|S)P^3(“发票”|S)P(“增值税”|S)P(“正规”|S)
注意这一项:P^3(“发票”|S)。
在统计计算P(“发票”|S)时,每个被统计的样本中重复的词语也统计多次。
P(“发票”|S)=出现“发票”的次数的总和所有词出现次数(计算重复次数)的总和
你看这个多次出现的结果,出现在概率的指数/次方上,因此这样的模型叫作多项式模型。

伯努利模型
伯努利模型中,对于一个样本来说,其特征用的是全局的特征。更加简化的方法是将重复的词语都视为其只出现1次.
P((“代开”,“发票”,“增值税”,“发票”,“正规”,“发票”)|S)
=P(“发票”|S)P(“代开””|S)P(“增值税”|S)P(“正规”|S)
出现了只计算一次
这样的模型叫作伯努利模型(又称为二项独立模型)。这种方式更加简化与方便。当然它丢失了词频的信息,因此效果可能会差一些。

“`
from sklearn import datasets
from sklearn.naive_bayes import GaussianNB
import matplotlib.pyplot as plt
import numpy as np
iris = datasets.load_iris()

x = iris.data[:, [1, 2]]
y = iris.target

gnb = GaussianNB()
gnb.fit(x, y)
y_pre = gnb.predict(x)
right_num = (iris.target == y_pre).sum()
print x.shape[0]
print right_num
print right_num.astype(“float”)/x.shape[0]
print gnb.score(x, y)

def plot_decision_visual(data, labels,classifier, resolution=0.1):
x_min, x_max = data[:, 0].min() - 1, data[:, 0].max() +1
y_min, y_max = data[:, 1].min() - 1, data[:, 1].max() +1
xx, yy = np.meshgrid(np.arange(x_min, x_max, resolution),
np.arange(y_min, y_max, resolution))
z = classifier.predict(np.array([xx.ravel(), yy.ravel()]).T)
z = z.reshape(xx.shape)
plt.contourf(xx, yy, z, alpha=0.5)
for i, m, color in zip(range(3), ‘>ox’, ‘rgb’):
plt.scatter(data[labels == i, 0],
data[labels == i, 1],
marker=m,
c=color)
plt.xticks([])
plt.yticks([])

plt.show()

plot_decision_visual(x, y, gnb)
这里写图片描述“`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
朴素贝叶斯分类器(Naive Bayes classifier)是一种常用的概率分类方法,它基于贝叶斯理论和特征独立假设。朴素贝叶斯分类器有着简单高效的特点,在文本分类、垃圾邮件过滤、情感分析等领域都有广泛应用。 朴素贝叶斯分类器的基本原理是利用训练集的特征和对应的分类标签构建生成模型,然后根据测试样本的特征,通过计算后验概率来进行分类预测。具体而言,朴素贝叶斯分类器假设特征之间相互独立,基于此假设,可以通过训练集中特征在各个类别下的条件概率来计算样本在不同类别下的后验概率,并选择后验概率最大的类别作为分类结果。 朴素贝叶斯分类器的训练过程包括两个步骤:首先是计算各个类别的先验概率,即每个类别在训练集中的出现频率;然后是计算每个特征在各个类别下的条件概率,即给定一个类别时,特征的条件概率。在得到先验概率和条件概率后,可以通过贝叶斯公式计算后验概率。 朴素贝叶斯分类器的优点在于对小规模数据集具有较好的分类性能,且能够处理多类别分类问题。而其缺点则是对于特征之间的相关性较为敏感,当特征之间存在强相关性时,朴素贝叶斯分类器的性能会下降。 总的来说,朴素贝叶斯分类器是一种简单而有效的分类方法,它在许多实际应用中表现出色。其理论基础扎实,实现相对简单,适用于处理小规模数据集的分类问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值