朴素贝叶斯与决策树分类

news2025/1/12 20:09:39

朴素贝叶斯分类

1贝叶斯分类理论

选择高概率对应的类别

2条件概率

事件B发生的情况下,事件A发生的概率

𝑃(𝐴|𝐵)=𝑃(𝐴∩𝐵)/𝑃(𝐵) => 𝑃(𝐴∩𝐵)=𝑃(𝐴|𝐵)𝑃(𝐵) ①

同理:

𝑃(𝐴∩𝐵)=𝑃(𝐵|𝐴)𝑃(𝐴) ②

根据①②可得:

𝑃(𝐴|𝐵)=𝑃(B|A)𝑃(𝐴)/𝑃(𝐵) 即条件概率

3 全概率公式

①𝑃(𝐵)=𝑃(𝐵∩𝐴)+𝑃(𝐵∩𝐴′)

②𝑃(𝐵∩𝐴)=𝑃(𝐵|𝐴)𝑃(𝐴)

=>𝑃(𝐵)=𝑃(𝐵|𝐴)𝑃(𝐴)+𝑃(𝐵|𝐴′)𝑃(𝐴′) (全概率公式)

A和A'构成样本空间的一个划分,那么事件B的概率,就等于A和A'的概率分别乘以B对这两个事件的条件概率之和。

4 贝叶斯推断

条件概率公式变形可得:

先验概率 ( P(A) ) 是在事件 ( B ) 发生之前,对事件 ( A ) 概率的初步判断。

后验概率 ( P(A|B)) 是在事件 ( B ) 发生之后,对事件 ( A ) 概率的更新评估。

似然函数 ( P(B|A)/P(B) ) 是一个调整因子,用于将先验概率与实际观测结果结合,使得估计的概率更接近真实值。

因此,条件概率可以理解为:

后验概率 = 先验概率 × 似然函数

这就是贝叶斯推断的核心:通过先验概率和实验结果(即似然函数),更新对事件概率的估计。

5 朴素贝叶斯推断

理解了贝叶斯推断,那么让我们继续看看朴素贝叶斯。贝叶斯和朴素贝叶斯的概念是不同的,区别就在于“朴素”二字,朴素贝叶斯对条件概率分布做了条件独立性的假设。

6 拉普拉斯平滑系数

拉普拉斯平滑(或加一平滑)是一种处理“零概率陷阱”的技术,它通过对概率进行调整,避免了在特征或事件未在训练集中出现时其概率被估计为零的问题。

公式为:

一般α取值1,m的值总特征数量

API
sklearn.naive_bayes.MultinomialNB()
estimator.fit(x_train, y_train)
y_predict = estimator.predict(x_test)

示例:

#贝叶斯
from sklearn.naive_bayes import MultinomialNB  # type: ignore
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
​
wind=load_wine()
x_train,x_test,y_train,y_test=train_test_split(wind.data,wind.target,test_size=0.3)
​
clf=MultinomialNB()
clf.fit(x_train,y_train)
​
print(clf.score(x_test,y_test))
​
pre=clf.predict(x_train)
print(pre)
​

决策树-分类

1 概念

  1. 决策节点 决策节点用于通过条件判断进行分支选择。例如,在决策树中,将样本的特征值与决策节点上的阈值进行比较,以确定样本的流向。

  2. 叶子节点 叶子节点是没有子节点的终端节点,表示最终的决策结果或分类标签。

  3. 决策树的深度 决策树的深度指的是从根节点到最远叶子节点的最长路径上的层次数。根节点的深度为0,每下层的节点深度增加1。

  4. 决策树的优点

    可视化 可解释性 计算要求低

  5. 决策树的缺点

    过拟合:决策树容易过拟合训练数据,特别是当树的深度过大时。因此,需要控制树的深度或进行剪枝,以避免过拟合

2 基于信息增益决策树的建立

信息增益决策树倾向于选择取值较多的属性,在有些情况下这类属性可能不会提供太多有价值的信息,算法只能对描述属性为离散型属性的数据集构造决策树。

(1) 信息熵

信息熵描述的是不确定性。信息熵越大,不确定性越大。信息熵的值越小,则D的纯度越高。

假设样本集合D共有N类,第k类样本所占比例为Pk,则D的信息熵为

(2) 信息增益

信息增益是一个统计量,用来描述一个属性区分数据样本的能力。信息增益越大,那么决策树就会越简洁。这里信息增益的程度用信息熵的变化程度来衡量, 信息增益公式:

(3) 信息增益决策树建立步骤

第一步,计算根节点的信息熵

第二步,计算属性的信息增益

第三步, 划分属性

3 基于基尼指数决策树的建立(了解)
  1. 定义基尼指数

基尼指数定义为:

其中:

  • D是当前数据集。

  • K是类别的总数。

  • pk是属于第 k类的样本占数据集 D 的比例。

基尼指数越低数据集的纯度越高。

  1. 计算基尼增益

对于每个特征,我们计算分裂前后的基尼指数的变化,称为基尼增益。选择使基尼增益最大的特征作为分裂特征。基尼增益的计算公式为:

其中:

  • A是候选特征。

  • Values(A)是特征 A 的所有可能取值。

  • Dv是特征 A 取值为 v 的子集。

  • ∣Dv∣和 ∣D∣∣ 分别是子集 Dv 和整个数据集 D 的样本数。

示例
# 可视化决策树
function sklearn.tree.export_graphviz(estimator, out_file="iris_tree.dot", feature_names=iris.feature_names)
参数:
    estimator决策树预估器
    out_file生成的文档
    feature_names节点特征属性名

用决策树对葡萄酒进行分类

from sklearn.datasets import load_wine
from sklearn.model_selection import StratifiedKFold
from sklearn.preprocessing import StandardScaler
from sklearn.tree import DecisionTreeClassifier, export_graphviz
import numpy as np
​
# 加载数据
wine = load_wine()
X, y = wine.data, wine.target  # 确保 X 和 y 被正确地定义
​
# 划分数据集
s_k_fold = StratifiedKFold(n_splits=5, shuffle=True, random_state=17)
for train_index, test_index in s_k_fold.split(X, y):
    X_train, X_test = X[train_index], X[test_index]
    y_train, y_test = y[train_index], y[test_index]
​
    # 数据预处理
    transfer = StandardScaler()
    X_train = transfer.fit_transform(X_train)
    X_test = transfer.transform(X_test)
​
    # 模型训练
    model = DecisionTreeClassifier(criterion='entropy')
    model.fit(X_train, y_train)
​
    # 模型评估
    score = model.score(X_test, y_test)
    print("Fold Accuracy:\n", score)
​
    # 预测
    pre = model.predict(X_test)
    print("真实值:\n", y_test)
    print("预测值:\n", pre)
    print("预测值对应的类别名:\n", wine.target_names[pre])
​
# 保存模型
export_graphviz(model, out_file='./src/wine.dot', feature_names=wine.feature_names)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2064658.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【前端面试】浏览器原理解读

前端进阶——浏览器篇-CSDN博客 浏览器工作原理与Javascript高级(前后端异步)-CSDN博客 DOM树的建立过程 前端DOM(文档对象模型)数的建立过程,实际上是浏览器解析HTML文档并构建DOM树的过程。这一过程大致可以分为以…

声音克隆GPT-SoVITS 2.0软件和详细的使用教程!

天命人,请允许我先蹭个热点! 原始声音: 播放 克隆声音: 播放 文章写了一半,被《黑神话悟空》刷屏了。突发奇想,用里面的声音来做个素材试试看。 B站捞了一点声音素材,随便剪一剪&#xff0c…

IOS半越狱工具nathanlr越狱教程

简介 nathanlr 是一款半越狱工具,不是完整越狱。 半越狱只能使用一些系统范围的插件。 无法做到完整越狱 Dopamine 越狱一样插件兼容性。 nathanlr支持 iOS 16.5.1 – 16.6.1 系统。 支持 A12 及以上设备。 肯定有人问,为什么仅仅支持这些系统&#xff…

关于全球影像下载你需要知道这些参数

经常会有客户问我们,如果想要下载全球的影像应该怎么下载,这里我们用数字说话,为你介绍一下全球影像下载的那些关键参数。 TIF文件大小 在开始之前说明一下,以下表格中所有出现的级别均为标准级别,如果想对应水经微图…

Qt系列之数据库(一)

Qt 数据库开发是指在Qt框架下进行数据库操作的开发工作。Qt提供了一套强大的数据库模块,可以方便地与多种数据库进行交互,如SQLite、MySQL、PostgreSQL等。 该模块中接口是使用C语言,也就是说,学习相关的类及类的接口使用。 qt…

我的Markdown简历模板开源了!

我之前写过一篇文章,很详细的讲解了如何使用Markdown写出一份漂亮的简历,并且在各个博客平台都有发布。 为了方便,我在这贴一下这篇文章的链接:✨Markdown制作简历教程 如果你还没有读过,或者恰好需要做一份新的简历…

【Kubernetes】K8s中Container(容器)、Pod(小组)和node(节点)概念讲解

Kubernetes学习之路 第一章 Kubernetes学习入门之Container(容器)、Pod(小组)和node(节点)概念 文章目录 Kubernetes学习之路前言一、Container(容器)二、Pod(小组)1.单容器 Pod2.多容器 Pod 三、Container(容器&…

132-横向移动-Exchange 服务有账户 CVE 漏洞无账户口令爆破

Exchange服务 Microsoft Exchange Server 是微软公司推出的一款企业级邮件服务器软件,它提供了一套全面的电子邮件服务组件,以及消息和协作系统。Exchange Server 不仅支持电子邮件服务,还提供了日历、联系人管理、任务管理、文档管理、实时会…

机器学习 之 决策树与随机森林的实现

引言 随着互联网技术的发展,垃圾邮件过滤已成为一项重要的任务。机器学习技术,尤其是决策树和随机森林,在解决这类问题时表现出色。本文将介绍随机森林的基本概念,并通过一个具体的案例——筛选垃圾电子邮件——来展示随机森林的…

【Qt】输入类控件QTextEdit

目录 输入类控件QTextEdit 例子:获取多行输入框的内容 例子:验证输入框的各种信号 输入类控件QTextEdit QTextEdit表示多行输入框,也是一个富文本&markdown编辑器。 并且能在内容超出编辑框范围时自动提供滚动条 在Qt中,有俩…

前端CSS选择器

css 和html 三种表示方式 行内样式 >内部样式>外部样式 元素选择器 属性选择器 id选择器 选择id为bb的 ,给他增添样式 class选择器以 .开头 用法和id差不都 包含选择器和父子选择器 兄弟选择器 选择器组合 伪元素选择器 首字母格式不一样 首行格式不一样 …

java设计模式--创建型设计模式

创建型模式可分为:单例模式、抽象工厂模式、原型模式、建造者模式、工厂模式 单例模式 单例模式 就是采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个获取其对象的方法(静态方法&#xf…

Unity编辑器扩展之Project视图扩展

内容将会持续更新,有错误的地方欢迎指正,谢谢! Unity编辑器扩展之Project视图扩展 TechX 坚持将创新的科技带给世界! 拥有更好的学习体验 —— 不断努力,不断进步,不断探索 TechX —— 心探索、心进取&#xff01…

河南萌新联赛2024第(六)场:郑州大学(补题ABCDFGIL)

文章目录 河南萌新联赛2024第(六)场:郑州大学A 装备二选一(一)简单介绍:思路:代码: B 百变吗喽简单介绍:思路:代码: C 16进制世界简单介绍&#x…

第二十七节、人物可互动标识

一、多个场景同时存在 方法:将另一个场景拖拽进 当前场景中 这样在一个场景中保存物体,另一个场景切换即可 创建一个场景名为上图(这是一个持久化的场景) 被激活的场景是粗体字的 二、代码 使用第二个代码获得player的子物体 …

uniapp在线下载安装包更新app以及热更新

首先用getSystemInfo判断平台、 再通过json文件模拟接口 判断版本号是否一致 不一致则下载服务器apk进行更新 外加网络波动导致失败重新下载更新包 uni.getSystemInfo({success: function (e) {// #ifndef H5// 获取手机系统版本const system e.system.toLowerCase();const pl…

《黑神话:悟空》解锁+35项修改器,开启上帝模式!

哈喽,各位小伙伴们好,我是给大家带来各类黑科技与前沿资讯的小武。 8 月 20 日,国产 3A 大作《黑神话:悟空》闪亮登场!这是一款由中国游戏开发商游戏科学开发的动作角色扮演游戏,此前在研发阶段就备受关注…

Python 使用 matplotlib 显示图像

如果没有安装 matplotlib 需要先安装: pip install matplotlib一、读取图片并显示 import matplotlib.pyplot as pltimage_path "/Users/AlanWang4523/Desktop/Debug/files/image.png" image_array plt.imread(image_path)plt.figure("ImageShow…

会声会影作为视屏制作软件如何?会声会影最新免费版

二、核心功能与特点 拖放式编辑:会声会影2024提供了拖放式标题、转场、覆叠和滤镜功能,使得视频编辑变得更加直观和高效。 色彩分级与动态分屏:软件支持色彩分级功能,可以对视频进行精细的色彩调整。同时,动态分屏功能…

STM32通用定时器,端口复用和重映射

STM32定时器是一种内置在STM32微控制器中的硬件模块,用于测量和控制时间。它具有高精度、可配置性和灵活性的特点,能够支持多种不同的工作模式和应用场景。以下是对STM32定时器的详细讲解: 一、定时器的基本构成 STM32定时器主要由以下几个…