朴素贝叶斯与决策树分类

2024-08-23 00:20

本文主要是介绍朴素贝叶斯与决策树分类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

朴素贝叶斯分类

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.chinasem.cn/article/1097815

相关文章

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

用Pytho解决分类问题_DBSCAN聚类算法模板

一:DBSCAN聚类算法的介绍 DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法,DBSCAN算法的核心思想是将具有足够高密度的区域划分为簇,并能够在具有噪声的空间数据库中发现任意形状的簇。 DBSCAN算法的主要特点包括: 1. 基于密度的聚类:DBSCAN算法通过识别被低密

PMP–一、二、三模–分类–14.敏捷–技巧–看板面板与燃尽图燃起图

文章目录 技巧一模14.敏捷--方法--看板(类似卡片)1、 [单选] 根据项目的特点,项目经理建议选择一种敏捷方法,该方法限制团队成员在任何给定时间执行的任务数。此方法还允许团队提高工作过程中问题和瓶颈的可见性。项目经理建议采用以下哪种方法? 易错14.敏捷--精益、敏捷、看板(类似卡片)--敏捷、精益和看板方法共同的重点在于交付价值、尊重人、减少浪费、透明化、适应变更以及持续改善等方面。

【python计算机视觉编程——8.图像内容分类】

python计算机视觉编程——8.图像内容分类 8.图像内容分类8.1 K邻近分类法(KNN)8.1.1 一个简单的二维示例8.1.2 用稠密SIFT作为图像特征8.1.3 图像分类:手势识别 8.2贝叶斯分类器用PCA降维 8.3 支持向量机8.3.2 再论手势识别 8.4 光学字符识别8.4.2 选取特征8.4.3 多类支持向量机8.4.4 提取单元格并识别字符8.4.5 图像校正

PMP–一、二、三模–分类–14.敏捷–技巧–原型MVP

文章目录 技巧一模14.敏捷--原型法--项目生命周期--迭代型生命周期,通过连续的原型或概念验证来改进产品或成果。每个新的原型都能带来新的干系人新的反馈和团队见解。题目中明确提到需要反馈,因此原型法比较好用。23、 [单选] 一个敏捷团队的任务是开发一款机器人。项目经理希望确保在机器人被实际建造之前,团队能够收到关于需求的早期反馈并相应地调整设计。项目经理应该使用以下哪一项来实现这个目标?

基于深度学习 卷积神经网络resnext50的中医舌苔分类系统

项目概述 本项目旨在通过深度学习技术,特别是利用卷积神经网络(Convolutional Neural Networks, CNNs)中的ResNeXt50架构,实现对中医舌象图像的自动分类。该系统不仅能够识别不同的舌苔类型,还能够在PyQt5框架下提供一个直观的图形用户界面(GUI),使得医生或患者能够方便地上传舌象照片并获取分析结果。 技术栈 深度学习框架:采用PyTorch或其他

电脑驱动分类

电脑驱动程序(驱动程序)是操作系统与硬件设备之间的桥梁,用于使操作系统能够识别并与硬件设备进行通信。以下是常见的驱动分类: 1. 设备驱动程序 显示驱动程序:控制显卡和显示器的显示功能,负责图形渲染和屏幕显示。 示例:NVIDIA、AMD 显示驱动程序。打印机驱动程序:允许操作系统与打印机通信,控制打印任务。 示例:HP、Canon 打印机驱动程序。声卡驱动程序:管理音频输入和输出,与声卡硬件

决策树的实现原理与matlab代码

很久不写博客了,感觉很长一段时间只是一味的看书,疏不知一味地看书、写代码会导致自己的思考以及总结能力变得衰弱。所以,我决定还是继续写博客。废话不多说了,今天想主要记录数据挖掘中的决策树。希望能够将自己的理解写得通俗易懂。 决策树是一种对实例分类的树形结构,树中包含叶子节点与内部节点。内部节点主要是数据中的某一特性,叶子节点是根据数据分析后的最后结果。 先看一组数据: 这组数据的特性包含