Python朴素贝叶斯

1 声明

本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。

2 贝叶斯简介

相关概念见下:

条件概率P(B|A) = P(AB)/P(A)

即B在A发生的时的概率等于A、B同时发生的概率除以A发生的概率

全概率

P(A)=P(A|B1)P(B1)+ P(A|B2)P(B2)+…… P(A|Bn)Bn

这里B1,B2……Bn是对A的n中划分,P(Bi)>0,0<i<n+1,i是正整数。

贝叶斯

Python朴素贝叶斯_朴素贝叶斯

其中P(H)是假设H成立的概率,又称为先验概率,P(E)是证据的可能性(这里与假设无关),

P(E|H)是假设成立对应证据的可能性,P(H|E)是假设存在时证据的概率,是一种推断。

朴素贝叶斯分类

朴素贝叶斯是一种利用贝叶斯定理的分类器。它预测每个类的成员概率,例如给定记录或数据点属于特定类的概率。概率最大的类被认为是最可能的类。这也称为Maximum A Posteriori(MAP)最大后验概率。

MAP(H)
= max( P(H|E) )
=  max( (P(E|H)*P(H))/P(E))
= max(P(E|H)*P(H))

Python朴素贝叶斯_数据_02

贝叶斯分类的注意点:

1 假设数据的统计分布,比如正态、多项式、伯努利。

2 特征间是独立的。

3 朴素贝叶斯代码示例

# 加载朴素贝叶斯相关包
from sklearn import datasets
from sklearn.naive_bayes import GaussianNB
# 加载iris数据
iris = datasets.load_iris()
# 定义X和y
features = iris.data
target = iris.target
# 创建分类器对象
classifer = GaussianNB()
# 定义新的样本
new_observation = [[ 2.6, 2.6, 2.6, 0.4]]
# 输出所属分类的概率值
print(classifer.fit(features, target).predict_proba(new_observation))

Python朴素贝叶斯_数据_03

4 总结

优点:

1 朴素贝叶斯算法是一种快速、高扩展性的算法

2 朴素贝叶斯算法支持二分类和多分类,有高斯、多项式、伯努利多种实现

3 适合于小样本上

不足:

因假设各特征间无关,所以处理特征间有关系的效果不好。