当前位置: 首页 > news >正文

【机器学习】自定义数据集 ,使用朴素贝叶斯对其进行分类

一、贝叶斯原理

        贝叶斯算法是基于贝叶斯公式的,其公式为:

P(A\mid B)= \frac{P(B\mid A)P(A)}{P(B)}

        其中P(A)叫做先验概率,P(B\mid A)叫做条件概率,P(B)叫做观察概率,P(A\mid B)叫做后验概率,也是我们求解的结果,通过比较后验概率的大小,将后验概率最大的类别作为真实类别

二、朴素贝叶斯分类

        朴素贝叶斯(Naive Bayes)是一种基于贝叶斯定理的简单概率分类算法,适用于文本分类、垃圾邮件过滤等任务。

        朴素贝叶斯的“朴素”之处在于它假设特征之间相互独立,即给定类别,一个特征的出现不影响其他特征的出现。这在现实世界中通常不成立,但在许多情况下,这种简化的假设仍然能够提供良好的分类性能。

三、自定义数据集 ,使用朴素贝叶斯对其进行分类

1、代码示例:

import numpy as np
from sklearn.naive_bayes import GaussianNB# 1. 自定义数据集
# 生成 100 个样本,每个样本有 2 个特征
X = np.random.randn(100, 2).astype(np.float32)
# 根据特征的线性组合生成标签,大于 0 标记为 1,否则标记为 0
y = (2 * X[:, 0] + 3 * X[:, 1] > 0).astype(np.int32)# 2. 初始化朴素贝叶斯模型
model = GaussianNB()# 3. 训练模型
model.fit(X, y)# 4. 输出训练结果
print("训练完成!")
print("模型参数:")
print("类别先验概率:", model.class_prior_)
print("类别数量:", model.class_count_)
print("每个类别的均值:", model.theta_)
print("每个类别的方差:", model.sigma_)

2、代码解释

① 数据集生成
  • X = np.random.randn(100, 2).astype(np.float32)

        生成 100 个样本,每个样本有 2 个特征。

        使用 np.random.randn 生成符合标准正态分布的随机数。

  astype(np.float32) 将数据类型转换为 32 位浮点数。

  • y = (2 * X[:, 0] + 3 * X[:, 1] > 0).astype(np.int32)

        根据特征的线性组合生成标签。

        公式 2 * X[:, 0] + 3 * X[:, 1] > 0 表示特征的线性组合是否大于 0。

        大于 0 的样本标记为 1,否则标记为 0

  astype(np.int32) 将标签转换为 32 位整数。

② 初始化朴素贝叶斯模型
  • model = GaussianNB()

        使用高斯朴素贝叶斯模型(Gaussian Naive Bayes)。

        适用于连续特征数据。

③ 训练模型
  • model.fit(X, y)

        使用数据集训练模型。

        模型会计算每个类别的先验概率、均值和方差。

④ 输出训练结果
  • model.class_prior_

        输出每个类别的先验概率。

  • model.class_count_

        输出每个类别的样本数量。

  • model.theta_

        输出每个类别的均值。

  • model.sigma_

        输出每个类别的方差。

http://www.lryc.cn/news/529976.html

相关文章:

  • 02.01 生产者消费者
  • mac 手工安装OpenSSL 3.4.0
  • kamailio-ACC_JSON模块详解【后端语言go】
  • ArkTS语言介绍
  • 海外问卷调查之渠道查,企业经营的指南针
  • spring和Mybatis的逆向工程
  • 【Android】问deepseek存储访问
  • Android记事本App设计开发项目实战教程2025最新版Android Studio
  • python学习——函数的返回值
  • 【竞技宝】裂变天地S1:BB0-2PARI淘汰出局
  • 数据分析系列--⑨RapidMiner训练集、测试集、验证集划分
  • 实践Rust:编写一个猜数字游戏
  • JavaFX - 3D 形状
  • 阿里新发的大模型Qwen2.5-max如何?
  • 文本复制兼容方案最佳实现落地。
  • x86-64数据传输指令
  • LigerUI在MVC模式下的响应原则
  • java CountDownLatch和CyclicBarrier
  • 力扣动态规划-17【算法学习day.111】
  • 读书笔记-《你的灯亮着吗?》
  • MATLAB实现多种群遗传算法
  • tf.Keras (tf-1.15)使用记录3-model.compile方法
  • Prometheus 中的 Exporter
  • 网工_HDLC协议
  • leetcode 2563. 统计公平数对的数目
  • Debian 10 中 Linux 4.19 内核在 x86_64 架构上对中断嵌套的支持情况
  • FLTK - FLTK1.4.1 - demo - bitmap
  • 数据结构 树1
  • android主题设置为..DarkActionBar.Bridge时自定义DatePicker选中日期颜色
  • MySQL 如何深度分页问题