机器学习基础04

目录

1.朴素贝叶斯-分类

1.1贝叶斯分类理论

1.2条件概率

1.3全概率公式

1.4贝叶斯推断

1.5朴素贝叶斯推断

1.6拉普拉斯平滑系数

1.7API

2.决策树-分类

2.1决策树

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

2.2.1信息熵

2.2.2信息增益

2.2.3信息增益决策树建立步骤

2.3基于基尼指数决策树的建立

2.3.1基尼指数

2.4API


1.朴素贝叶斯-分类

1.1贝叶斯分类理论

选择较高概率对应的类别,为其样本的类别。

1.2条件概率

条件概率(Conditional probability),就是指在事件B发生的情况下,事件A发生的概率,用P(A|B)来表示。

由 𝑃(𝐴|𝐵)=𝑃(𝐴∩𝐵)/𝑃(𝐵),

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

同理可得,

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

即,条件概率的计算公式:

𝑃(𝐴|𝐵)=𝑃(B|A)𝑃(𝐴)/𝑃(𝐵)

1.3全概率公式

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

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

所以,全概率公式:

𝑃(𝐵)=𝑃(𝐵|𝐴)𝑃(𝐴)+𝑃(𝐵|𝐴′)𝑃(𝐴′) 

1.4贝叶斯推断

对条件概率公式进行变形:

P(A)称为"先验概率"(Prior probability),即在B事件发生之前,我们对A事件概率的一个判断。

P(A|B)称为"后验概率"(Posterior probability),即在B事件发生之后,我们对A事件概率的重新评估。

P(B|A)/P(B)称为"可能性函数"(Likelyhood),这是一个调整因子,使得预估概率更接近真实概率。

理解: 后验概率 = 先验概率x调整因子

1.5朴素贝叶斯推断

 朴素贝叶斯对条件概率分布做了条件独立性的假设。

p(a|X) = p(X|a)* p(a)/p(X)
p(X|a) = p(x1,x2,x3...xn|a) = p(x1|a)*p(x2|a)*p(x3|a)...p(xn|a)
p(X) = p(x1,x2,x3...xn) = p(x1)*p(x2)*p(x3)...p(xn)
p(a|X) = p(x1|a)*p(x2|a)*p(x3|a)...p(xn|a) * p(a) / p(x1)*p(x2)*p(x3)...p(xn)

1.6拉普拉斯平滑系数

某些事件或特征可能从未出现过,这会导致其的概率被估计为零。然而,在实际应用中,即使某个事件或特征没有出现在训练集中,也不能完全排除它在未来样本中出现的可能性。拉普拉斯平滑技术可以避免这种“零概率陷阱”。

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

通过这种方法,即使某个特征在训练集中从未出现过,其概率也不会被估计为零,而是会被赋予一个很小但非零的值,从而避免了模型在面对新数据时可能出现的过拟合或预测错误。

1.7API

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

score= estimator.score(x_test,y_test)

from sklearn.datasets import load_digits
from sklearn.model_selection import StratifiedKFold
from sklearn.naive_bayes import MultinomialNBdata =load_digits()
x,y =data.data,data.target# 贝叶斯算法预估器
estimator = MultinomialNB()fold = StratifiedKFold(n_splits=5,shuffle=True,random_state =10)
indexs = fold.split(x,y)for train_index, test_index in indexs:x_train,x_test = x[train_index],x[test_index]y_train,y_test = y[train_index],y[test_index]# 模型训练estimator.fit(x_train,y_train)# 模型测试y_predict=estimator.predict(x_test)# print(y_predict)# 模型评估score = estimator.score(x_test,y_test)print(score)

2.决策树-分类

2.1决策树

  • 决策节点

通过条件判断而进行分支选择的节点。

  • 叶子节点

没有子节点的节点,表示最终的决策结果。

  • 决策树的深度

所有节点的最大层次数。

  • 决策树优点

可视化 - 可解释能力-对算力要求低

  • 决策树缺点

容易产生过拟合,不能把深度调整得太大了。

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

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

2.2.1信息熵

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

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

2.2.2信息增益

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

2.2.3信息增益决策树建立步骤

第一步:计算各属性的信息熵。

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

第三步:划分属性,信息增益较高者,作为划分节点。

第四步:在分支情况下,计算剩余属性的信息熵。重复第二,三步。

2.3基于基尼指数决策树的建立

2.3.1基尼指数

基尼指数(Gini Index)是决策树算法中用于评估数据集纯度的一种度量,基尼指数衡量的是数据集的不纯度,或者说分类的不确定性。在构建决策树时,基尼指数被用来决定如何对数据集进行最优划分,以减少不纯度。

2.3.2基尼指数的计算

对于一个二分类问题,如果一个节点包含的样本属于正类的概率是 (p),则属于负类的概率是 (1-p)。那么,这个节点的基尼指数 (Gini(p)) 定义为:

2.3.3基尼指数的意义

  • 当一个节点的所有样本都属于同一类别时,基尼指数为 0,表示纯度最高。

  • 当一个节点的样本均匀分布在所有类别时,基尼指数最大,表示纯度最低。

2.3.4决策树中的应用

在构建决策树时,我们希望每个内部节点的子节点能更纯,即基尼指数更小。因此,选择分割特征和分割点的目标是使子节点的平均基尼指数最小化。具体来说,对于一个特征,我们计算其所有可能的分割点对应的子节点的加权平均基尼指数,然后选择最小化这个值的分割点。这个过程会在所有特征中重复,直到找到最佳的分割特征和分割点。

2.4API

class sklearn.tree.DecisionTreeClassifier(criterion)

参数:

  • criterion :

默认为="gini" 
        取值为"gini"时采用 基尼不纯度(Gini impurity)算法构造决策树,

        取值为"entropy”时采用信息增益( information gain)算法构造决策树.

  • max_depth: 

int, 默认为=None  树的最大深度

function sklearn.tree.export_graphviz(estimator, out_file="iris_tree.dot", feature_names=iris.feature_names)

参数:

  •     estimator: 决策树预估器
  •     out_file: 生成的文档
  •     feature_names: 节点特征属性名

功能:
    把生成的文档打开,复制出内容粘贴到"http://webgraphviz.com/"中,点击"generate Graph"会生成一个树型的决策树图

  

from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import GridSearchCV,train_test_split,StratifiedKFold
from sklearn.tree import DecisionTreeClassifier,export_graphviz# 加载数据
dataset = load_iris()
x,y = dataset.data,dataset.target# 数据划分
x_train,x_test,y_train,y_test = train_test_split(x,y,train_size=0.7,shuffle=True,random_state=4)fold=StratifiedKFold# 数据标准化
transfer = StandardScaler()
s_x_train = transfer.fit_transform(x_train)
s_x_test = transfer.transform(x_test)# 决策树预估器
estimator = DecisionTreeClassifier(criterion='entropy',max_depth=3)
estimator.fit(s_x_train,y_train)# 模型训练,超参数搜索
param_grid = {'max_depth': [1,2,3],'min_samples_split': [2, 5, 10],'min_samples_leaf': [1, 2, 4]
}
grid_search = GridSearchCV(estimator,param_grid =param_grid)
grid_search.fit(s_x_train,y_train)# 模型评估
score = grid_search.best_score_
print(score)
n = grid_search.best_params_
print(n)# 可视化决策树
export_graphviz(estimator,out_file='iris_tree.dot',feature_names=['萼片长度','萼片宽度','花瓣长度','花瓣宽度'])

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT学术专用版,一键润色纠错+中英互译+批量翻译PDF

ChatGPT academic项目是由中科院团队基于ChatGPT专属定制。论文润色、语法检查、中英互译、代码解释等可一键搞定,堪称科研神器。 功能介绍 我们以3.5版本为例,ChatGPT学术版总共分为五个区域:输入控制区、输出对话区、基础功能区、函数插件…

fpga 同步fifo

FIFO 基础知识 FIFO(First In First Out,即先入先出),是一种数据缓存器,用来实现数据先入先出 的读写方式。在 FPGA 或者 ASIC 中使用到的 FIFO 一般指的是对数据的存储具有先入先出 特性的缓存器,常被用于…

模式:每个服务一个数据库

Pattern: Database per service。 背景 如用微服务架构模式开发一个在线商店应用程序。大多数服务需要在某种数据库中持久化数据。如,订单服务存储订单信息,而客户服务存储客户信息。 问题 微服务应用程序中的数据库架构是什么? 驱动力…

Java 全栈知识体系

包含: Java 基础, Java 部分源码, JVM, Spring, Spring Boot, Spring Cloud, 数据库原理, MySQL, ElasticSearch, MongoDB, Docker, k8s, CI&CD, Linux, DevOps, 分布式, 中间件, 开发工具, Git, IDE, 源码阅读,读书笔记, 开源项目...

WebRTC实现双端音视频聊天(Vue3 + SpringBoot)

目录 概述 相关概念 双端连接整体实现步骤概述 文章代码实现注意点 STUN和TURN服务器的搭建 开发过程描述 后端开发流程 前端开发流程 效果演示 Gitee源码地址 概述 文章描述使用WebRTC技术实现一对一音视频通话。 由于设备摄像头限制(一台电脑作测试无法…

机器学习3

六、朴素贝叶斯分类 背景知识:第三大点的第4点:概率 基础定义_数学概率中事件的定义-CSDN博客 1、条件概率 𝑃(𝐴|𝐵)𝑃(𝐴∩𝐵)/𝑃(𝐵) :A事件在…

SpringBoot Data Redis连接Redis-Cluster集群

使用SpringBoot Data Redis无法连接Redis-Cluster集群 最近在研究系统高并发下的缓存架构,因此自己在自己买的云服务器上搭建好Redis 5.0 版本的集群后,使用springboot的 RedisTemplate连接是发现总是访问不到集群节点。上网百度了发现没有好的解决办法&…

网页作业9

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>服务中心</title><style>* {margin:…

基于yolov8、yolov5的行人检测识别系统(含UI界面、训练好的模型、Python代码、数据集)

摘要&#xff1a;行人检测在交通管理、智能监控和公共安全中起着至关重要的作用&#xff0c;不仅能帮助相关部门实时监控人群动态&#xff0c;还为自动化监控系统提供了可靠的数据支撑。本文介绍了一款基于YOLOv8、YOLOv5等深度学习框架的行人检测模型&#xff0c;该模型使用了…

递归(3)----力扣40组合数2,力扣473火柴拼正方形

给定一个候选人编号的集合 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意&#xff1a;解集不能包含重复的组合。 示例 1: 输入: candidates [10,1,2,7,6,1…

1Panel 推送 SSL 证书到阿里云、腾讯云

本文首发于 Anyeの小站&#xff0c;点击链接 访问原文体验更佳 前言 都用 CDN 了还在乎那点 1 年证书钱么&#xff1f; 开句玩笑话&#xff0c;按照 Apple 的说法&#xff0c;证书有效期不该超过 45 天。那么证书有效期的缩短意味着要更频繁地更新证书。对于我这样的“裸奔”…

通过shell脚本分析部署nginx网络服务

通过shell脚本分析部署nginx网络服务 1.接收用户部署的服务名称 [rootlocalhost xzy]# vim 1.sh [rootlocalhost xzy]# chmod x 1.sh [rootlocalhost xzy]# ./1.sh2.判断服务是否安装 已安装&#xff1b;自定义网站配置路径为/www&#xff1b;并创建共享目录和网页文件&…

tcp 超时计时器

在 TCP&#xff08;传输控制协议&#xff09;中有以下四种重要的计时器&#xff1a; 重传计时器&#xff08;Retransmission Timer&#xff09; 作用&#xff1a;用于处理数据包丢失的情况。当发送方发送一个数据段后&#xff0c;就会启动重传计时器。如果在计时器超时之前没有…

华为云租户网络-用的是隧道技术

1.验证租户网络是vxlan 2.验证用OVS 2.1控制节点VXLAN 本端ip&#xff08;local ip&#xff09;192.168.31.8 2.2计算节点VXLAN 本端ip&#xff08;local ip&#xff09;192.168.31.11 计算节点用的是bond0做隧道网络 2.3查看bond文件是否主备模式

【AI+教育】一些记录@2024.11.11

《清华发布工具学习框架&#xff0c;让ChatGPT操控地图、股票查询&#xff0c;贾维斯已来&#xff1f;》 清华发布工具学习框架&#xff0c;让ChatGPT操控地图、股票查询&#xff0c;贾维斯已来&#xff1f;工具学习&#xff0c;清华天团让 ChatGPT 拿起专业工具https://mp.we…

day-17 反转字符串中的单词

利用split()函数和substring函数 code: class Solution {public String reverseWords(String s) {int m0;while(s.charAt(m) ){m;}ss.substring(m);String arr[]s.split("[\\s]");int narr.length;String ss"";for(int in-1;i>1;i--){ssssarr[i]"…

台式电脑没有声音怎么办?台式电脑没有声音解决详解

台式电脑一般来说都是没有内置扬声器的&#xff0c;需要连接耳机或者是音响才可以播放音乐。那么如果遇到台式电脑没有声音的问题&#xff0c;我们也需要确认这些设备硬件有没问题&#xff0c;知道原因才可以进行处理。下面本文将为你介绍台式电脑没有声音的可能原因和解决方法…

一文速学---红黑树

文章目录 一、红黑树简介二、 红黑树特性三、红黑树插入3.1 红黑树为空3.2 父节点为黑色3.3 父节点为红色3.3.1 父亲和叔叔都是红色3.3.2 父节点为红色&#xff0c;叔叔节点为黑色3.3.2.1 父节点在左节点&#xff0c;插入节点在父亲左节点3.3.2.2 父节点在左节点&#xff0c;插…

gitlab容器的迁移(部署)并配置自动备份

gitlab容器的迁移&#xff08;部署&#xff09;并配置自动备份 本文背景为从Ubuntu服务器上迁移gitlab容器到windows并备份&#xff0c;若要直接拉取镜直接安装配置可直接从第二小标题参考 1、原Ubuntu的gitlab容器制作为镜像 2.1 将运行的容器制为镜像 #镜像&#xff1a;i…

Linux:调试器-gdb/cgdb

文章目录 一、编译成debug1、-g 选项 二、gdb调试命令1、在CentOS系统下检查安装gdb2、进入gdb模式3、quit 退出gdb4、list &#xff08;简写 l&#xff09;显示文件内容5、b 打断点6、 r / run运行程序7、c 让程序直接运行完 三、cgdb1、info b查看打的所有断点2、d 删除断点3…