基础算法--贝叶斯算法

本文深入探讨了贝叶斯算法的数学原理,包括条件概率和贝叶斯定理,并通过实例解析其应用。同时,文章还详细介绍了在机器学习中朴素贝叶斯算法的使用,如sklearn库中的MultinomialNB类,涵盖关键参数如alpha、fit_prior和class_prior的解释,以及模型中的属性如class_log_prior_和feature_log_prob_。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

贝叶斯算法数学原理

贝叶斯算法背景

在这里插入图片描述

贝叶斯算法推导

在这里插入图片描述

在这里插入图片描述

推导方法1

在这里插入图片描述
在这里插入图片描述

推导方法2

根据条件概率公式:
①P(A|B) = P(AB)/P(B) ----> P(AB) = P(A|B)·P(B)
②P(B|A) = P(AB)/P(A)) ----> P(AB) =P(B|A)·P(A)
在这里插入图片描述

贝叶斯定理应用实例

例1

在这里插入图片描述

例2

在这里插入图片描述

在这里插入图片描述

代码实战

贝叶斯算法API参数(以朴素贝叶斯为例)

class sklearn.naive_bayes.MultinomialNB(alpha=1.0, fit_prior=True, class_prior=None)

参数:

  1. MultinomialNB:多项式分布的朴素贝叶斯。
    2.alpha: 控制模型拟合时的平滑度.
    3.fit_prior: 是否去学习类的先验概率
  2. class_prior: 各个类别的先验概率,如果没有指定,则模型会根据数据自动学习, 每个类别的先验概率相同,等于类标记总个数N分之一。

属性:
1.class_log_prior_:每个类别平滑后的先验概率
2.intercept_:是朴素贝叶斯对应的线性模型,其值和class_log_prior_相同
3.feature_log_prob_:给定特征类别的对数概率(条件概率)。 特征的条件概率=(指定类下指定特征出现的次数+alpha)/(指定类下所有特征出现次数之和+类的可能取值个数*alpha)
4.coef_: 是朴素贝叶斯对应的线性模型,其值和feature_log_prob相同
5.class_count_: 训练样本中各类别对应的样本数
6.feature_count_: 每个类别中各个特征出现的次数

朴素贝叶斯naive bayes

"""
朴素贝叶斯:以鸢尾花数据集为例
"""
import pandas as pd
#可视化混淆矩阵
def cm_plot(y,yp):
    from sklearn.metrics import confusion_matrix 
    import matplotlib.pyplot as plt
    
    cm = confusion_matrix(y, yp)
    plt.matshow(cm, cmap=plt.cm.Blues)
    plt.colorbar()
    for x in range(len(cm)):
        for y in range(len(cm)):
            plt.annotate(cm[x,y],xy=(y,x),horizontalalignment='center',
                         verticalalignment='center')
            plt.ylabel('True label')
            plt.xlabel('Predicted label')
    return plt

'''
数据预处理
'''
data = pd.read_csv(r'/Users/dx/Desktop/Python数据分析与机器学习/11.贝叶斯算法/贝叶斯算法/iris.csv',
                header = None)

data = data.drop(0, axis = 1)
data.head()

X = data.drop(5,axis = 1)
y = data[5]

from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = \
    train_test_split(X, y, test_size = 0.2, random_state = 0)  

'''
实例化:贝叶斯分类器
'''
from sklearn.naive_bayes import MultinomialNB

classifier = MultinomialNB(alpha = 1)
classifier.fit(x_train,y_train)

'''
训练集预测
'''
train_predicted = classifier.predict(x_train)
cm_plot(y_train, train_predicted)

'''
测试集预测
'''
test_predicted = classifier.predict(x_test)
cm_plot(y_test, test_predicted)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值