首页 > 其他分享 >《机器学习》 贝叶斯分类器 原理、参数讲解及代码演示

《机器学习》 贝叶斯分类器 原理、参数讲解及代码演示

时间:2024-08-26 20:57:52浏览次数:13  
标签:概率 演示 cm 贝叶斯 分类器 train test 先验概率

目录

一、贝叶斯算法

1、简介

2、贝叶斯算法具有以下特点:

二、贝叶斯原理

1、正向概率(先验概率)

 例如:

2、逆向概率(后验概率)

3、公式

1)实例1

2)实例2

• 目标:

• 核心:

• 计算:

三、参数讲解

1、用法

2、参数

1)alpha 控制模型合成时的平滑度

2)fit_prior 是否学习类的先验概率

3)class_prior 各个类别的先验概率

四、代码实现

1、文件内容

2、完整代码

输出结果:


一、贝叶斯算法

1、简介

        贝叶斯算法是一种基于贝叶斯定理的统计学习方法。在机器学习中,贝叶斯算法用于推断模型参数或预测未知数据的概率分布。

        贝叶斯定理是概率论中的一个基本定理,用于描述在已知某些条件下,另一事件发生的概率。贝叶斯算法利用该定理在训练阶段根据样本数据和先验知识估计参数的后验分布,然后在预测阶段根据后验分布计算未知数据的概率分布。

        贝叶斯算法的基本思想将概率视为对不确定性的衡量,并通过不断更新先验概率来得到后验概率。

2、贝叶斯算法具有以下特点:

        1)能够从少量的样本数据中进行学习,因为贝叶斯算法利用了先验分布的知识;

        2)能够处理多模态数据,即对于不同的预测结果,贝叶斯算法可以给出概率分布而不仅仅是一个确定的结果;

        3)能够逐步学习和更新模型,因为贝叶斯算法可以通过后续样本数据来更新模型的参数和概率分布。

二、贝叶斯原理

1、正向概率(先验概率)

        正向概率指的是在给定模型参数或假设的情况下,计算观测数据的概率。换句话说,正向概率是从模型或假设到观测数据的概率。

 例如:

        假设袋子里有10个白球,90个黑球,然后从袋子里拿出一个球,拿出的白球的概率是多少?

                p(摸出白球)= 10/100 = 1/10

2、逆向概率(后验概率)

        逆向概率(也称为后验概率)则是在给定观测数据的情况下,计算模型参数或假设的概率。逆向概率是指从观测数据到模型或假设的概率。

3、公式

求B的条件下A的概率

1)实例1

        已知在所有男子中有5%患色盲,在所有女子中有0.25%患色盲,随机抽取一个人是色盲,其为男子的概率是多大?(男女人数相等)

        A:抽到男生 B:抽到女生 C:抽到色盲

p(A|C)= P(C|A) * P(A) / P(C) = 5% * 0.5 / ( 0.5 * 5% + 0.5 * 0.25%) = 95%

2)实例2

        贝叶斯如何进行样本数据进行计算实现预测的?

实例:一个包含3个特征(A、B、C)和一个类别标签的简单数据集如下:

• 目标:

        使用朴素贝叶斯分类器来预测一个新的样本(特征A=1,B=1,C=0)(特征A=0,B=0,C=1)的类别。

• 核心:

        把输入当做条件,结果为0的概率是多少,结果为1的概况是多少

• 计算:

        求P(D=0 | A=1,B=1,C=0) 以及 P(D=1 | A=1,B=1,C=0)概率

P(D=0 | A=1,B=1,C=0) = P( A=1,B=1,C=0 | D=0) * P(D=0) / P(A=1,B=1,C=0)

        = P(A=1| D=0) * P(B=1| D=0) * P(C=0| D=0) * P(D=0) / P(A=1,B=1,C=0)

P(D=1 | A=1,B=1,C=0) = P( A=1,B=1,C=0 | D=1) * P(D=1) / P(A=1,B=1,C=0)

        = P(A=1| D=1) * P(B=1| D=1) * P(C=0| D=1) * P(D=1) / P(A=1,B=1,C=0)

有了上述公式,即可计算类别的先验概率

        P(D=0) = 3/6 = 0.5

        P(D=1) = 3/6 = 0.5

然后计算每个特征在每个类别下的条件概率:

此时即可计算给定特征值下每个类别的后验概率,得到如下结果:

三、参数讲解

1、用法

class sklearn.native_bayes.MulitnomialNB(alpha=1.0,fit_prior=True,class_prior=None)

  MultinaomialNB 表示多项式分布的朴素贝叶斯

2、参数

1)alpha 控制模型合成时的平滑度

        alpha是一个浮点数,用于解决在训练数据中出现零概率问题。

作用:平滑是一种防止过拟合的技术,特别是在处理稀疏数据集或者未出现在训练集中的特征时。

影响:alpha值过大会影响模型模型复杂度,过大则导致预测概率减少,可能导致分类器更稳定,但是准确率降低,反之则导致过拟合现象。

2)fit_prior 是否学习类的先验概率

        当为True时,模型会根据训练集计算每个类的先验概率,如果训练集的某个类的样本数较少,则可能导致计算出的先验概率非常小,从而导致该类样本在分类时被忽略,影响模型分类效果。(有样本不均衡情况下,少用fit_prior)

3)class_prior 各个类别的先验概率

        如果没有指定,则模型会根据数据自动学习

四、代码实现

1、文件内容

        一共100条数据,第一列为序号,最后一列为类别

2、完整代码

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

# 导入数据,设置参数header,表示没有标题行
data = pd.read_csv("iris.csv",header=None)

# data = data.drop(0,axis=1)
# 取出除去第一列的所有数据,再赋值给data
data = data.iloc[:,1:] 
x = data.iloc[:,:-1]  # 取出所有的行,列为除去最后一列的所有特征
y = data.iloc[:,-1]   # 取出所有行,以及最后一列的数据



from sklearn.model_selection import train_test_split    # 对原始数据进行随机切分,得到测试集和训练集数据

x_train_w,x_test_w,y_train_w,y_test_w = 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_test_w,y_test_w)   # 导入训练集数据对其进行训练

train_predicted = classifier.predict(x_train_w)   # 输入测试集进行测试
cm_plot(y_train_w,train_predicted)   # 可视化,绘制混淆矩阵

test_predicted = classifier.predict(x_test_w)  
cm_plot(y_test_w,test_predicted)

from sklearn import metrics

print(metrics.classification_report(y_train_w, train_predicted))  # 分别打印分类报告
print(metrics.classification_report(y_test_w, test_predicted))
输出结果:

标签:概率,演示,cm,贝叶斯,分类器,train,test,先验概率
From: https://blog.csdn.net/qq_64603703/article/details/141529097

相关文章

  • 一款特别牛逼还免费的屏幕演示批注注释工具,教学演示工具
    功能强大,还免费!PEVOAnnotator是一款功能强大的屏幕标注软件,广泛应用于教学演示、屏幕录像等场景。该软件支持多种操作系统,包括macOS和Windows。它提供了丰富的工具和功能,如画笔、直线、圆形、方形等形状绘制工具,以及直尺、量角器等测量工具。在使用过程中,用户可以选择不......
  • Redis入门篇 - CentOS 7下载、安装Redis实操演示
    文章记录了在CentOS7上,通过源码的形式,下载安装Redis的操作过程进入要安装Redis的目录cd/usr/local下载源码压缩包wgethttps://download.redis.io/redis-stable.tar.gz#不同版本可能地址不同下载完成后,使用ll命令检查,可以看到下载的压缩包:下载完成后,解压......
  • Python从0到100(五十三):决策树及决策树分类器
    决策树是⼀种常⽤的监督学习算法,⽤于解决分类和回归问题。它的基本原理是根据数据的特征来构建⼀颗树状结构,树的每个节点代表⼀个特征,每个分⽀代表⼀个特征的取值,叶节点代表输出类别或数值。决策树的⽬标是通过分裂特征,将数据集划分为纯度更⾼的⼦集,以最⼩化误差或不纯度......
  • 编程达人Windows核心编程 第18章 演示如何使用堆
    18_Heap.cpp演示如何使用堆18_Heap.cpp演示如何使用堆文章目录18_Heap.cpp/*------------------------------------------------------------------------18_Heap.cpp演示如何使用堆----------------------------------------------------------------------......
  • 朴素贝叶斯、决策树及随机森林
    朴素贝叶斯相关理论    在机器学习算法中,大多数的算法都是判别方法,如决策树、KNN、逻辑回归、支持向量机等。而朴素贝叶斯是生成方法,直接找出输出特征Y和特征X的联合分布,用得出。            如果X和Y条件独立,        ......
  • 从企业管理到智慧城市:数据可视化大屏的多领域应用详解(AxureRP原型多行业案例演示)
    前言:在现代商业环境中,广泛应用于政府、金融、互联网、制造业等多个领域,数据驱动决策已成为企业提升竞争力的关键要素之一。无论是智慧城市的管理中心,还是企业的数据中心,都能见到其身影。数据可视化大屏,作为一种高效直观的数据展示工具,能够将复杂的数据转化为易于理解的图形和图表......
  • Python 正则表达式详解 带例题演示
    Python正则表达式正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。Python自1.5版本起增加了re模块,它提供Perl风格的正则表达式模式。re模块使Python语言拥有全部的正则表达式功能。compile函数根据一个模式字符串和可选的标志......
  • 在 PowerShell 脚本中调用 msiexec 进行静默安装,可以通过设置 msiexec 的参数来实现。
    在PowerShell脚本中调用msiexec进行静默安装,可以通过设置msiexec的参数来实现。静默安装意味着在安装过程中不会弹出用户界面,也不会进行用户交互。下面是一个示例,演示如何使用PowerShell脚本执行静默安装。示例PowerShell脚本powershellCopyCode#MSI文件的路径$m......
  • 时序预测|基于贝叶斯BO-卷积-双向门控单元-注意力机制的单变量时间序列预测模型BO-CNN
    时序预测|基于贝叶斯BO-卷积-双向门控单元-注意力机制的单变量时间序列预测模型BO-CNN-BiGRU-Attention文章目录前言时序预测|基于贝叶斯BO-卷积-双向门控单元-注意力机制的单变量时间序列预测模型BO-CNN-BiGRU-Attention一、BO-CNN-BiGRU-Attention模型1.贝叶斯优......
  • 使用贝叶斯优化CDENCLUE聚类算法参数
    目录1.贝叶斯优化的基本原理原理和实现步骤:2.轮廓系数的原理公式:3.贝叶斯优化的实现流程(伪代码)1.贝叶斯优化的基本原理贝叶斯优化是一种基于概率模型的优化方法,主要用于优化计算代价高昂的黑盒函数。它结合了先验知识和观察到的数据来更新后验知识,并用一个易......