机器学习-朴素贝叶斯算法

朴素贝叶斯公式

        朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。前提各个特征条件独立,也是“朴素”之名的来历。

  • 先验概率      

        P(A)代表还没有训练模型之前,根据历史数据/经验估算A拥有的初始概率。P(A)常被称为A的先验概率(prior probability) ,它反映了A的概率分布,该分布独立于样本。  

  • 条件概率

       事件A已经发生的条件下,事件B发生的概率,称为事件B在给定事件A的条件概率,表示为P(B|A)。

                                ​​​​​​​        ​​​​​​​        ​​​​​​​        P(B|A)=\frac{P(AB)}{P(A)}

  • 贝叶斯定理

给定数据样本BA成立的概率P(A | B )被称为后验概率(posterior probability),因为它反映了在看到数据样本 B A 成立的置信度。

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​       P(A|B)=\frac{P(A)P(B|A)}{P(B)}​​​​​​​

  • 朴素贝叶斯分类器

        朴素贝叶斯通过训练数据集学习联合概率分布P(X,Y)。具体要先学习先验概率分布以及条件概率分布,进一步学习到联合概率分布。

        最后得到 朴素贝叶斯分类器的表达式:

  • 贝叶斯算法步骤

1、计算先验概率
2、计算条件概率
3、对于给定实例,计算P ( Y = c k ) ∏ j P ( X j = x j ∣ Y = c k ) , k = 1 , 2 , . . . , K 
4、确定实例x的类y= a r g   m a x c k P ( Y = c k ) ∏ j P ( X j = x j ∣ Y = c k ) 。

朴素贝叶斯算例

        我们通过使用鸢尾花数据集来展示朴素贝叶斯算法的实现过程:

import warnings
warnings.filterwarnings('ignore')
import numpy as np
# 加载莺尾花数据集
from sklearn import datasets
# 导入高斯朴素贝叶斯分类器
from sklearn.naive_bayes import GaussianNB
from sklearn.model_selection import train_test_split

X, y = datasets.load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

# 使用高斯朴素贝叶斯进行计算
clf = GaussianNB(var_smoothing=1e-8)
clf.fit(X_train, y_train)

# 评估
y_pred = clf.predict(X_test)
acc = np.sum(y_test == y_pred) / X_test.shape[0]
print("Test Acc : %.3f" % acc)

# 预测
y_proba = clf.predict_proba(X_test[:1])
print(clf.predict(X_test[:1]))
print("预计的概率值:", y_proba)

Test Acc : 0.967



运行结果:

结果分析:对于鸢尾花数据集我们先进行导入数据并且分析数据对其进行预处理,我们在进行朴素贝叶斯算法计算之后,再对我们的鸢尾花模型进行模型训练以及模型预测,最后得出模型概率的一个预测值。

总结

        通过上述原理的说明,我们知道了机器学习朴素贝叶斯算法的概念以及如何通过贝叶斯定理来处理模型数据,还有这朴素贝叶斯分类器的含义,并且我们通过获取数据集之后对数据进行预处理,再通过对数据集进行朴素贝叶斯算法之后,对模型进行创建、训练与评估之后,得出最后的预测结果。我们也可以知道朴素贝叶斯算法主要基于经典的贝叶斯公式进行推倒,具有很好的数学原理。而且在数据量很小的时候表现良好,数据量很大的时候也可以进行增量计算。由于朴素贝叶斯使用先验概率估计后验概率具有很好的模型的可解释性。同时因为朴素贝叶斯模型给定输出类别的情况下,假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。而在属性相关性较小时,朴素贝叶斯性能最为良好,所以不是在任何情况下,选择朴素贝叶斯算法都可以得到更好的性能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值