朴素贝叶斯

目录

        • 贝叶斯公式
        • 贝叶斯-小例子
        • 朴素贝叶斯
        • 3种贝叶斯模型
          • 正太分布
          • 二项式分布
          • 多项式分布
            • jupyternote book
            • 源码

  • 贝叶斯公式

在这里插入图片描述

  • 贝叶斯-小例子

一个例子,现分别有 A、B 两个容器,在容器 A 里分别有 7 个红球和 3 个白球, 在容器 B 里有 1 个红球和 9 个白球,现已知从这两个容器里任意抽出了一个球,且是红球, 问这个红球是来自容器 A 的概率是多少?

# 取一个球这个球是红球
P(B) = 8/20

# 来自A容器
P(A) = 1/2

# A容器中选中红球的概率
P(B|A) = 7/10

P(A|B) = P(A)*P(B|A)/P(B)
1/2*7/10*20/8 = 7/8
  • 朴素贝叶斯

朴素贝叶斯_第1张图片

现在给我们的问题是,如果一对男女朋友,男生向女生求婚,男生的四个特点分别是不帅,性格不好,身高矮,不上进,请你判断一下女生是嫁还是不嫁?

在这里插入图片描述
从上边表中给出的数据中,没有一种组合可以满足
在这里插入图片描述
这时,我们假设各个属性之间相互独立[即没有任何关系],那么上边公式可改写为

在这里插入图片描述

p(不帅|) = 3/6 = 1/2,其它的依次类推
# 计算的概率为
p(嫁|不帅,性格不好,身高矮,不上进) = (1/2*1/6*1/6*1/6*1/2)/(5/12*1/3*7/12*1/3)

以同样的方式计算出来p1(不嫁|不帅,性格不好,身高矮,不上进)p和p1,进行比较即可

  • 3种贝叶斯模型

如果数据集满足以下三种分布的任何一种分布,就去选用该种分布

  • 正太分布
  • 二项式分布
  • 多项式分布
  • jupyternote book

朴素贝叶斯_第2张图片

  • 源码
import sklearn.datasets as datasets
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
from sklearn.naive_bayes import GaussianNB,MultinomialNB,BernoulliNB

# 使用自带的鸢尾花数据
iris = datasets.load_iris()
X = iris['data']
y = iris['target']
# 划分数据集
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.2)
# 用图形观测数据的分布样子
# 鸢尾花数据有4个特征,下边只选取一个特征进行观测,其它的同理
plt.hist(X[:,0],bins=12) 
# 从以下的图形种观测到数据大体符合正太分布和多项分布
plt.hist(X[:,0],bins=5)
# 正太分布
gNB = GaussianNB()
gNB.fit(X_train,y_train)
gNB.score(X_test,y_test)
# 多项式分布
mNB = MultinomialNB()
mNB.fit(X_train,y_train)
mNB.score(X_test,y_test)
# 二项式分布
bNB = BernoulliNB()
bNB.fit(X_train,y_train)
bNB.score(X_test,y_test)

你可能感兴趣的:(Machine,learning)