首页 > 编程语言 >机器学习之 贝叶斯算法 及朴素贝叶斯分类器的代码实现(给我点赞的都发财,谢谢)

机器学习之 贝叶斯算法 及朴素贝叶斯分类器的代码实现(给我点赞的都发财,谢谢)

时间:2024-08-26 22:23:39浏览次数:11  
标签:plt cm 贝叶斯 分类器 train 点赞 test

贝叶斯算法简介

贝叶斯算法是一种基于概率论的统计学方法,广泛应用于机器学习领域。它基于贝叶斯定理,用于计算后验概率。贝叶斯定理可以表述为:

其中:

  • P(A∣B) 表示在事件 B 发生的情况下事件 A 发生的概率,称为后验概率。
  • P(B∣A) 表示在事件 A 发生的情况下事件 B 发生的概率,称为似然度。
  • P(A) 和 P(B) 分别是事件 A 和 B 的先验概率。

在机器学习中,贝叶斯算法通常用于分类任务,特别是文本分类和垃圾邮件过滤等领域。

朴素贝叶斯分类器

朴素贝叶斯分类器是一种简单的贝叶斯分类器,它假设特征之间相互独立。虽然这种假设在实际应用中很少成立,但朴素贝叶斯分类器仍然能够取得很好的效果。

朴素贝叶斯分类器的主要优点包括:

  • 计算效率高。
  • 需要较少的训练数据。
  • 对缺失数据不敏感。
  • 特征独立性假设简化了模型,使得训练过程更加高效。
准备数据

我们将使用 Iris 数据集来进行分类任务,数据如下:

实现代码

下面是使用 Python 和 scikit-learn 库实现朴素贝叶斯分类器的代码示例。

导入库
import pandas as pd
import matplotlib.pyplot as plt
定义一个混淆函数
# 定义一个绘制混淆矩阵的函数
def cm_plot(y, yp):
    from sklearn.metrics import confusion_matrix
    import matplotlib.pyplot as plt

    # 计算混淆矩阵
    cm = confusion_matrix(y, yp)

    # 使用 matshow 绘制混淆矩阵
    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
导入数据

读取iris.csv文件,第一行不设为列名,选择特征集和标签集,因为第一列数据为序列,所以不能作为特征集继续预测。

# 读取数据集
data = pd.read_csv('iris.csv', header=None)

# 选择特征列
x = data.iloc[:, 1:-1]

# 选择标签列
y = data.iloc[:, -1]
划分数据集和特征集

随机划分数据集和特征集,并设置测试集的占比为0.2,即训练集占比为0.8。随机种子设置为100,确保每一次运行代码时都能得到相同的数据分割结果。

# 划分训练集和测试集
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=100)
训练模型
# 创建并训练多项式朴素贝叶斯分类器
from sklearn.naive_bayes import MultinomialNB

classifier = MultinomialNB()
classifier.fit(x_train, y_train)
预测结果

分别对训练集和测试集继续预测

# 在训练集上进行预测
train_pred = classifier.predict(x_train)

# 在测试集上进行预测
test_pred = classifier.predict(x_test)
分类报告
# 计算并打印训练集上的分类报告
from sklearn import metrics

print(metrics.classification_report(y_train, train_pred))
# 绘制训练集上的混淆矩阵并打印
print(cm_plot(y_train, train_pred))

# 计算并打印测试集上的分类报告
print(metrics.classification_report(y_test, test_pred))
# 绘制测试集上的混淆矩阵并打印
print(cm_plot(y_test, test_pred))
plt.show()
输出结果

分类报告

混淆矩阵

总结

这个输出包含了两个分类报告和混淆矩阵,分别对应训练集和测试集的结果。这两个分类报告显示了模型在训练集和测试集上都取得了完美的性能。

标签:plt,cm,贝叶斯,分类器,train,点赞,test
From: https://blog.csdn.net/m0_73697499/article/details/141553317

相关文章

  • 《机器学习》 贝叶斯分类器 原理、参数讲解及代码演示
    目录一、贝叶斯算法1、简介2、贝叶斯算法具有以下特点:二、贝叶斯原理1、正向概率(先验概率) 例如:2、逆向概率(后验概率)3、公式1)实例12)实例2•目标:•核心:•计算:三、参数讲解1、用法2、参数1)alpha 控制模型合成时的平滑度2)fit_prior是否学习类的先验概率3)c......
  • Python从0到100(五十三):决策树及决策树分类器
    决策树是⼀种常⽤的监督学习算法,⽤于解决分类和回归问题。它的基本原理是根据数据的特征来构建⼀颗树状结构,树的每个节点代表⼀个特征,每个分⽀代表⼀个特征的取值,叶节点代表输出类别或数值。决策树的⽬标是通过分裂特征,将数据集划分为纯度更⾼的⼦集,以最⼩化误差或不纯度......
  • 朴素贝叶斯、决策树及随机森林
    朴素贝叶斯相关理论    在机器学习算法中,大多数的算法都是判别方法,如决策树、KNN、逻辑回归、支持向量机等。而朴素贝叶斯是生成方法,直接找出输出特征Y和特征X的联合分布,用得出。            如果X和Y条件独立,        ......
  • 时序预测|基于贝叶斯BO-卷积-双向门控单元-注意力机制的单变量时间序列预测模型BO-CNN
    时序预测|基于贝叶斯BO-卷积-双向门控单元-注意力机制的单变量时间序列预测模型BO-CNN-BiGRU-Attention文章目录前言时序预测|基于贝叶斯BO-卷积-双向门控单元-注意力机制的单变量时间序列预测模型BO-CNN-BiGRU-Attention一、BO-CNN-BiGRU-Attention模型1.贝叶斯优......
  • 使用贝叶斯优化CDENCLUE聚类算法参数
    目录1.贝叶斯优化的基本原理原理和实现步骤:2.轮廓系数的原理公式:3.贝叶斯优化的实现流程(伪代码)1.贝叶斯优化的基本原理贝叶斯优化是一种基于概率模型的优化方法,主要用于优化计算代价高昂的黑盒函数。它结合了先验知识和观察到的数据来更新后验知识,并用一个易......
  • Kolmogorov-Smirnov 检验 + k 样本 Anderson-Darling 检验 + 贝叶斯估计 + 期望方差
    KS检验是基于Kolmogorovdistribution,指的是\[K=\sup_{t\in[0,1]}\left\lvertB(t)\right\rvert\]式中\(B(t)\)是布朗桥。\(K\)的累积分布函数是\[\Pr(K\lex)=1-2\sum_{k=1}^\infty(-1)^{k-1}\mathrme^{-2k^2x^2}=\frac{\sqrt{2\pi}}x\sum_{k=1}^\infty\mathrme^......
  • 六. 部署分类器-preprocess-speed-compare
    目录前言0.简述1.案例运行2.代码分析2.1main.cpp2.2preprocess.cpp3.补充说明结语下载链接参考前言自动驾驶之心推出的《CUDA与TensorRT部署实战课程》,链接。记录下个人学习笔记,仅供自己参考本次课程我们来学习课程第六章—部署分类器,一起来CPU端图像预......
  • 南瓜书公式详解------第七章(贝叶斯)
    式7.5R(c∣x)=......
  • 我的点赞功能(完整分页查询步骤)和快速刷题开发
    文章目录1.我的点赞分页展示1.分页查询工具类1.PageInfo.java需要分页查询的就继承它,传值的时候pageNo和pageSize可以为空2.PageResult.java根据条件从数据库中查询信息,然后设置这里的四个值即可得到分页查询结果2.sun-club-application-controller1.SubjectLikedDTO.......
  • 随机森林分类器(Random Forest Classifier)
    随机森林分类器(RandomForestClassifier,又称为“随机森林”)是一种常用的机器学习算法,它是基于决策树的一种集成学习方法,是一种集成算法(EnsembleLearning),它属于Bagging类型,通过组合多个弱分类器,最终结果通过投票或取均值,使得整体模型的结果具有较高的精确度和泛化性能。......