【初中生讲机器学习】5. 从概率到朴素贝叶斯算法,一篇带你看明白!

创建时间:2024-02-04
最后编辑时间:2024-02-05
作者:Geeker_LStar

你好呀~这里是 Geeker_LStar 的人工智能学习专栏,很高兴遇见你~
我是 Geeker_LStar,一名初三学生,热爱计算机和数学,我们一起加油~!
⭐(●’◡’●) ⭐
那就让我们开始吧!

上两篇文章中,我详细讲了支持向量机(SVM)算法的原理,并用一个实例实现了它。在这一篇和下一篇中,我将分别讲解 & 实现朴素贝叶斯算法(分类器)
上两篇传送门:
【初中生讲机器学习】3. 支持向量机(SVM)一万字详解!超全超详细超易懂!
【初中生讲机器学习】4. 支持向量机算法怎么用?一个实例带你看懂!

文章目录

    • 一、五花八门的概率
      • 先验概率
      • 联合概率
      • 条件概率
      • 全概率公式
      • 后验概率
    • 二、贝叶斯公式
    • 三、朴素贝叶斯算法
      • 数学原理
      • 分类
      • 优缺点

一、五花八门的概率

嗯…概率论向来是一个令人头大的东西()可偏偏想要真正理解贝叶斯公式和朴素贝叶斯算法,概率是个绕不开的东西,并且它们的种类很多,有些又比较相似,还是很值得好好讲一下的。
以贝叶斯公式为出发,我们需要了解先验概率、联合概率、条件概率和后验概率

先验概率

先验概率是对于某个独立事件,根据以往经验和分析得到的它可能发生/不发生概率。先验概率可记作 P ( C ) P(C) P(C)
比如,你寒假前 25 天中有 5 天晚于 8:00 起床,那么你第 26 天晚于 8:00 起床的先验概率就是 20%。

联合概率

联合概率是两个或多个事件同时发生的概率,如果这些事件彼此独立,那么它们的联合概率等于它们之中每一个单独发生的概率的乘积(乘法原理)。但是如果彼此不独立,就不能这么用了,比如 “条件概率” 中讲到的小狗的例子。
联合概率可记作 P ( A ∩ B ) P(A∩B) P(AB) P ( A , B ) P(A, B) P(A,B) P ( A B ) P(AB) P(AB),如果 A、B 彼此独立,则 P ( A B ) = P ( A ) × P ( B ) P(AB) = P(A)×P(B) P(AB)=P(A)×P(B)
从几何上看,联合概率就是下图中的交集部分。

联合概率

(先透露一句,朴素贝叶斯算法的 “朴素” 就和 “联合概率” and “彼此独立” 有关噢~)
比如,现在有两个均匀的骰子,一个蓝色一个红色,那么【投出蓝色的骰子 6 点朝上】的概率就等于【投出蓝骰子的概率】×【6 点朝上的概率】,即 1 2 × 1 6 = 1 12 \frac{1}{2}×\frac{1}{6} = \frac{1}{12} 21×61=121

条件概率

条件概率是指事件 A 在另外一个事件 B 已经发生的条件下的发生概率。
条件概率可记作 P ( A ∣ B ) P(A|B) P(AB),即 “在 B 条件下 A 发生的概率”,它等于 【B 发生 A 发生的概率”】÷【B 发生的概率】,即 P ( A ∣ B ) = P ( A B ) P ( B ) P(A|B) = \frac{P(AB)}{P(B)} P(AB)=P(B)P(AB)
从几何上来看,条件概率就是下图中的蓝色部分:

条件概率

比如这道题:一种小狗由出生活到 5 岁的概率为 0.8,活到 10 岁的概率为0.4,问现年 5 岁的这种小狗活到 10 岁的概率是多少?
这很明显是个条件概率问题,即 “在活到 5 岁的条件下活到 10 岁的概率是多少”,由条件概率公式可得, P ( 10 岁 ∣ 5 岁 ) = P ( 活到 10 岁 ) P ( 活到 5 岁 ) = 0.4 0.8 = 0.5 P(10岁|5岁) = \frac{P(活到10岁)}{P(活到 5 岁)} = \frac{0.4}{0.8} = 0.5 P(10∣5)=P(活到5)P(活到10)=0.80.4=0.5,即这只小狗活到 10 岁的概率是 50%。
注意,由条件概率的定义可知, P ( A ∣ B ) ≠ P ( B ∣ A ) P(A|B) ≠ P(B|A) P(AB)=P(BA)
另外,条件概率和联合概率一定要分清楚噢。一般情况下,条件概率是大于联合概率的,可以这么理解:联合概率中,事件 B 是未发生的,而在条件概率中,事件 B 已经发生,即 B 发生的概率是 1。或者去看这个例子:联合概率和条件概率到底有什么区别?
对之所以强调这个,就是因为我对着条件概率和联合概率的公式想了半天,这俩到底有啥不一样呢,后来终于搞懂了((

全概率公式

全概率公式的应用条件是:事件 B 1 、 B 2 、 B 3 … B k B_{1}、B_{2}、B_{3}…B_{k} B1B2B3Bk 构成一个完备事件组且全部 P ( B i ) > 0 P(B_{i})>0 P(Bi)>0。简单来讲就是如果这 k k k 种情况能够覆盖全部情况(比如性别 “男” 和 “女”),那就能用全概率公式。
举个例子,一个人喜欢粉色的概率是多少?的答案等于 “这个人是男生且喜欢粉色的概率” 加上 “这个人是女生且喜欢粉色的概率”,比如 50 % ∗ 10 % + 50 % ∗ 80 % = 45 % 50\%*10\% + 50\%*80\% = 45\% 50%10%+50%80%=45%。这当中 “男生” 和 “女生” 就构成完备事件组,所用的公式就是全概率公式。
用数学语言表达一下,在上面所说的前提条件下有:
P ( A ) = ∑ i = 1 k P ( A ∣ B i ) × P ( B i ) P(A) = \sum\limits_{i=1}^{k}P(A|B_{i})×P(B_{i}) P(A)=i=1kP(ABi)×P(Bi)
这就是全概率公式。

后验概率

对于后验概率的解释,比较好理解的是这一种:某件事已经发生,计算这件事发生的原因是由某个因素引起的概率。也就是说,后验概率是 “由果及因” 的。再换一种说法,如果条件概率是 P ( A ∣ B ) P(A|B) P(AB),即 “在 B 发生的条件下 A 发生的概率”,那么对应的后验概率就是 P ( B ∣ A ) P(B|A) P(BA),即 “在 A 发生的情况下,B 发生的概率是多少”
举一个比较贴近人工智能的例子,我们现在已知 “如果这封邮件是垃圾邮件,那么邮件中出现某单词的概率是多少”,但是对于分类垃圾邮件的模型来说,更重要的肯定是 “如果这个单词出现了,那么这封邮件有多大概率是垃圾邮件”。这个 “更重要的” 就是后验概率。
很明显,后验概率都被称为 “后验” 了,那我们一开始肯定是不知道的,它是需要我们去求的
所以,怎么求?
ok,这时候就要请我们大名鼎鼎的贝叶斯公式出场了!

二、贝叶斯公式

实不相瞒,贝叶斯公式是我最喜欢的公式之一,甚至有段时间我的 qq 个签都是它。
先用一句话概括一下贝叶斯公式在做什么:利用先验概率和条件概率计算出后验概率。
ok,那我们来推导一下,并且简单说一下贝叶斯公式通常用在什么地方。

其实贝叶斯公式的推导很简单。
我们要求 P ( B ∣ A ) P(B|A) P(BA),根据条件概率公式易得 P ( B ∣ A ) = P ( A B ) P ( A ) P(B|A) = \frac{P(AB)}{P(A)} P(BA)=P(A)P(AB),又由 P ( A ∣ B ) = P ( A B ) P ( B ) P(A|B) = \frac{P(AB)}{P(B)} P(AB)=P(B)P(AB) 变形可得 P ( A B ) = P ( A ∣ B ) × P ( B ) P(AB) = P(A|B)×P(B) P(AB)=P(AB)×P(B)。带回原式得到:
P ( B ∣ A ) = P ( A ∣ B ) P ( B ) P ( A ) P(B|A) = \frac{P(A|B)P(B)}{P(A)} P(BA)=P(A)P(AB)P(B)

yes!这就是贝叶斯公式~~它告诉我们一种【执果索因】的方法。这种方法在人工智能领域有广泛的应用。

贝叶斯公式

在贝叶斯公式众多的应用中,朴素贝叶斯算法是非常有名的一个。

三、朴素贝叶斯算法

和 SVM 不同,朴素贝叶斯算法是一种多分类算法,它广泛用于垃圾邮件过滤和文本分类当中。我们从贝叶斯公式出发,了解一下它的数学原理。

数学原理

来看一个例子:现在有一堆具有 m m m 个特征的样本和 k k k 个不同的分类 ( c 1 、 c 2 、 . . . 、 c k ) (c_{1}、c_{2}、...、c_{k}) (c1c2...ck),某样本 X = [ x 1 、 x 2 、 . . . 、 x m ] X = [x_{1}、x_{2}、...、x_{m}] X=[x1x2...xm],如何判断它属于这 K K K 个分类中的哪一个?

嗯,涉及到条件概率,这明显可以用贝叶斯公式解决,即:
P ( 类别 ∣ 特征 ) = P ( 特征 ∣ 类别 ) P ( 类别 ) P ( 特征 ) P(类别|特征) = \frac{P(特征|类别)P(类别)}{P(特征)} P(类别特征)=P(特征)P(特征类别)P(类别)
用语言表达就是:一个具有这些特征的样本属于某个分类的概率,等于【它具有这些特征且属于这个类别的概率】除以【它具有这个特征的概率】。——你别说,其实这逻辑还挺好理解的。

先来看分母, P ( 特征 ∣ 类别 ) × P ( 类别 ) P(特征|类别)×P(类别) P(特征类别)×P(类别)

P ( 类别 ) P(类别) P(类别)先验概率,可以理解为:在不知道任何特征的情况下,这个样本属于某一类别的概率。比如,在 1000 组已知数据中(不考虑特征),属于 A 类别的有 800 个,属于 B 类别的有 150 个,属于 C 类别的有 50 个。那么,在给出一个新样本时(不考虑特征),它属于不同类别的概率就是 A 80%,B 15%,C 5%。

P ( 特征 ∣ 类别 ) P(特征|类别) P(特征类别) 是条件概率。朴素贝叶斯算法的 “朴素”,正是针对它而言的。
在日常生活中,一件事情或一个东西的各个特征之间或多或少都有一些关联(比如特征 “性别” 和特征 “喜欢的颜色”),几个特征彼此独立的情况是很少见的。BUT,特征之间彼此关联会极大地增加计算难度,而且其实我们也不知道某些特征之间的关联度到底有多少,这就很难办。
所以,为了解决这个问题,朴素贝叶斯算法假定, 所有特征之间是彼此独立的。 换言之,一个特征的改变并不会影响另一个特征的表现。

ok,这样的话我们就可以改写 P ( 特征 ∣ 类别 ) P(特征|类别) P(特征类别) 了。因为各个特征之间是彼此独立的,符合之前提到的那个联合概率计算公式的使用条件,即:
P ( 特征 ∣ 类别 ) = P ( 特征 1 ∣ 类别 ) × P ( 特征 2 ∣ 类别 ) . . . × P ( 特征 m ∣ 类别 ) P(特征|类别) = P(特征 1|类别)×P(特征 2|类别) ... ×P(特征 m|类别) P(特征类别)=P(特征1∣类别)×P(特征2∣类别)...×P(特征m类别)

这个公式挺好理解的,并不反直觉。写成数学表达式就是:
其中 Π \Pi Π 表示求积符号,连乘,类似于 Σ \Sigma Σ
P ( 特征 ∣ 类别 ) = ∏ i = 1 m P ( 特征 i ∣ 类别 ) P(特征|类别) = \prod\limits_{i=1}^{m} P(特征 i|类别) P(特征类别)=i=1mP(特征i类别)

于是分子我们已经解决掉了,就是下面这个公式:
P ( 类别 ) × ∏ i = 1 m P ( 特征 i ∣ 类别 ) P(类别) × \prod\limits_{i=1}^{m} P(特征 i|类别) P(类别)×i=1mP(特征i类别)

接下来来看分母,分母只有一项 P ( 特征 ) P(特征) P(特征)
根据上文讲过的全概率公式 P ( 特征 ) = P ( 特征 ∣ 类别 1 ) P ( 类别 1 ) + . . . + P ( 特征 ∣ 类别 k ) P ( 类别 k ) P(特征) = P(特征|类别 1)P(类别 1) +...+P(特征|类别 k)P(类别 k) P(特征)=P(特征类别1)P(类别1)+...+P(特征类别k)P(类别k),再加上刚刚讲过的,把 P ( 特征 ∣ 类别 ) P(特征|类别) P(特征类别)联合概率表示,最终的公式也就是:
P ( 特征 ) = ∑ j = 1 k P ( 类别 j ) × ∏ i = 1 m P ( 特征 i ∣ 类别 j ) P(特征) = \sum\limits_{j=1}^{k}P(类别 j)×\prod\limits_{i=1}^{m}P(特征 i|类别 j) P(特征)=j=1kP(类别j)×i=1mP(特征i类别j)

ok!我们现在已经顺利地将公式改写完成了!计算后验概率 P ( 类别 ∣ 特征 ) P(类别|特征) P(类别特征) 的公式如下:
P ( 类别 ∣ 特征 ) = P ( 类别 ) × ∏ i = 1 m P ( 特征 i ∣ 类别 ) ∑ j = 1 k P ( 类别 j ) × ∏ i = 1 m P ( 特征 i ∣ 类别 j ) P(类别|特征) = \frac{P(类别) × \prod\limits_{i=1}^{m} P(特征 i|类别)}{\sum\limits_{j=1}^{k}P(类别 j)×\prod\limits_{i=1}^{m}P(特征 i|类别 j)} P(类别特征)=j=1kP(类别j)×i=1mP(特征i类别j)P(类别)×i=1mP(特征i类别)

完美,这真是一个美妙的公式!

so,朴素贝叶斯公式要干什么呢?没错,它就是要根据上面这个公式求出一个已知特征的样本被分到不同类别的概率,其中概率最大的类别就是这个样本最终被分到的类别。

综上,朴素贝叶斯分类器可以表示为:
f ( x ) = a r g m a x P ( 类别 ∣ 特征 ) = a r g m a x P ( 类别 ) × ∏ i = 1 m P ( 特征 i ∣ 类别 ) ∑ j = 1 k P ( 类别 j ) × ∏ i = 1 m P ( 特征 i ∣ 类别 j ) f(x) = argmax P(类别|特征) = argmax \frac{P(类别)×\prod\limits_{i=1}^{m} P(特征 i|类别)}{\sum\limits_{j=1}^{k}P(类别 j)×\prod\limits_{i=1}^{m}P(特征 i|类别 j)} f(x)=argmaxP(类别特征)=argmaxj=1kP(类别j)×i=1mP(特征i类别j)P(类别)×i=1mP(特征i类别)

不难发现,对于同一个样本,分母总是一样的,因为分母就是 P ( 特征 ) P(特征) P(特征)(同一个样本的特征肯定是一样的)。把分母去掉后,朴素贝叶斯分类器最终表示为
f ( x ) = a r g m a x P ( 类别 ) × ∏ i = 1 m P ( 特征 i ∣ 类别 ) f(x) = argmax P(类别) × \prod\limits_{i=1}^{m} P(特征 i|类别) f(x)=argmaxP(类别)×i=1mP(特征i类别)
这就是朴素贝叶斯分类器的计算原理!其实最后真正用于计算的就是 P ( 特征,类别 ) P(特征,类别) P(特征,类别),也就是联合概率!
只能说,妙哉。

emmm but,现在有另一个小问题。在这个公式中,如果其中一项比如 P ( 特征 2 ∣ 类别 ) P(特征 2|类别) P(特征2∣类别) 为 0,会导致整个式子都变成 0,这显然不合理。
为了避免这样的情况,我们可以使用拉普拉斯平滑,这是一种常用的平滑方法,通过避免零概率问题来提高分类器的准确率。

拉普拉斯平滑简单来说就是在分子分母上同时加一个不为 0 的数,在样本量很大的时候,这种操作一般对结果造不成什么影响。

比如,上文公式中的 P ( 类别 ) = 已知数据中被分到该类别的样本数 D y 样本总数 D P(类别) = \frac{已知数据中被分到该类别的样本数 D_{y}}{样本总数 D} P(类别)=样本总数D已知数据中被分到该类别的样本数Dy,运用拉普拉斯平滑,变为 D y + 1 D + N \frac{D_{y}+1}{D+N} D+NDy+1,其中 N N N 为总类别数。

类似的, P ( 特征 i ∣ 类别 ) P(特征 i|类别) P(特征i类别) 用拉普拉斯平滑可以表示为 D y , 特征 i + 1 D y + N i \frac{D_{y, 特征 i}+1}{D_{y}+N_{i}} Dy+NiDy,特征i+1 N i N_{i} Ni 表示特征 i i i 可能的取值数。

当然,分子上不一定要加 1,可以加任意数 x x x,但是分母需要对应的加上 μ x μx μx,其中 μ μ μ 对应分子可能的种类数。

经过这么一番操作,朴素贝叶斯算法的准确率就更高了。

分类

和 SVM 一样,朴素贝叶斯算法也分为几种,每种负责处理不同类型的问题。

  • 高斯模型
    高斯模型负责处理连续型数据,比如人的身高。
    一些连续型数据虽然可以转化为离散型数据(如身高在 150-160 之间用 1 代表),但是这样必然会导致精度不足,使用高斯模型可以避免这个问题。

对于离散型数据,可以使用多项式模型或伯努利模型。

  • 多项式模型
    多项式模型的使用最为广泛。比如统计某文档中的单词,如果直接以单词出现的频次计算,可以使用多项式模型。
  • 伯努利模型
    伯努利模型的适用情况非常鲜明——当数据可以用布尔类型表示的时候,即全为 1 或 0,全为 true or false。还是统计单词的例子,如果按照单词是否出现(1、0)来统计,可以使用伯努利模型。

优缺点

以下是朴素贝叶斯算法的优缺点:

  • 优点:
  1. 以贝叶斯公式为基础,具有稳定的分类效率
  2. 算法逻辑简单,计算开销小,适合增量式训练,即使在数据量超出内存时也能分批次进行。
  3. 能够处理多分类任务。
  4. 对缺失数据不敏感:当数据中有缺失值时,朴素贝叶斯算法可能比其它算法表现更好。
  • 缺点:
  1. 依赖 “所有特征彼此独立” 的假设,但这种假设在实际情况中不太可能成立。
  2. 基于先验概率,如果先验概率偏差较大,对模型的分类效果影响大。
  3. 对输入数据的表达形式敏感:离散、连续、极大极小值等,若输入数据的表达形式与假设不符,对模型分类效果影响较大。

以上,我们对朴素贝叶斯算法已经有了一个比较详细的了解啦!!!


ok!!!!!以上就是关于朴素贝叶斯算法的详细讲解!!

嘿嘿真的非常开心你能够看到这里!!一起加油!

如果有任何 bug 欢迎评论区拷打我!!

这篇文章从概率开始,详细地讲了贝叶斯公式和朴素贝叶斯算法,希望对你有所帮助!⭐
——Geeker_LStar

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

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

相关文章

[C++]继承(续)

一、基类和派生类对象赋值转换 在public继承时,父类和子类是一个“is - a”的关系。 子类对象赋值给父类对象/父类指针/父类引用,我们认为是天然的,中间不产生临时对象,也叫作父子类赋值兼容规则(切割/切片&#xff…

工作与生活平衡:在生活中寻找和谐

工作和生活是我们生活中不断交织的两个重要方面。对许多人来说,找到两者之间的完美平衡已经成为一个持久的挑战。然而,与其专注于平衡,更重要的是要认识到工作和生活并不是可以相互平衡的两个分离实体,而是一个相互影响的循环。正…

服务器和云服务器哪个更安全?

随着云计算技术的不断发展,越来越多的企业开始选择使用云服务器来存储和处理数据。然而,对于一些企业来说,他们可能更倾向于使用传统的服务器。在这种情况下,安全性成为了一个重要的考虑因素。那么,服务器和云服务器哪…

普通编程,机器学习与深度学习

普通编程:基于人手动设置规则,由输入产生输出经典机器学习:人手工指定需要的特征,通过一些数学原理对特征与输出的匹配模式进行学习,也就是更新相应的参数,从而使数学表达式能够更好的根据给定的特征得到准…

windows10忘记密码的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

【iOS ARKit】3D 人体姿态估计

与基于屏幕空间的 2D人体姿态估计不同,3D人体姿态估计是尝试还原人体在三维世界中的形状与姿态,包括深度信息。绝大多数的现有3D人体姿态估计方法依赖2D人体姿态估计,通过获取 2D人体姿态后再构建神经网络算法,实现从 2D 到 3D人体…

LeetCode 热题 100 | 链表(中下)

目录 1 19. 删除链表的倒数第 N 个节点 2 24. 两两交换链表中的节点 3 25. K 个一组翻转链表 4 138. 随机链表的复制 菜鸟做题第三周,语言是 C 1 19. 删除链表的倒数第 N 个节点 到底是节点还是结点。。。 解题思路: 设置双指针 left 和 ri…

聊聊比特币----比特币地址

⽐特币地址是⼀个标识符(帐号),地址可以以QR码形式表⽰,是匿名的,不包含关于所有者的信息。 ⼤多数⽐特币地址(P2PKH,P2SH)是34个字符。它们由随机数字和⼤写字母及⼩写字母组成,除了⼤写字母“O”&#x…

前端复杂 table 渲染及 excel.js 导出

转载请注明出处,点击此处 查看更多精彩内容 现在我们有一个如图(甚至更复杂)的表格需要展示到页面上,并提供下载为 excel 文件的功能。 前端表格渲染我们一般会使用 element-ui 等组件库提供的 table 组件,这些组件一般…

css3 属性 backface-visibility 的实践应用

backface-visibility 是一个用于控制元素在面对屏幕不同方向时的可见性的CSS3特性。它有两个可能的值: visible:当元素不面向屏幕(即背面朝向用户)时,元素的内容是可以被看到的。hidden:当元素不面向屏幕…

day32 买卖股票的最佳时机Ⅱ 跳跃游戏 跳跃游戏Ⅱ

题目1:122 买卖股票的最佳时机Ⅱ 题目链接:122 买卖股票的最大时机Ⅱ 题意 整数数组prices[i]表示某股票的第i天的价格,每天可买卖股票且最多持有1股股票,返回最大利润 利润拆分,拆分为每天的利润 每天的正利…

基于若依的ruoyi-nbcio流程管理系统自定义业务回写状态的一种新方法(二)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: https://gitee.com/nbacheng/n…

【八大排序】选择排序 | 堆排序 + 图文详解!!

📷 江池俊: 个人主页 🔥个人专栏: ✅数据结构冒险记 ✅C语言进阶之路 🌅 有航道的人,再渺小也不会迷途。 文章目录 一、选择排序1.1 基本思想1.2 算法步骤 动图演示1.3 代码实现1.4 选择排序特性总结 二…

Vue3项目封装一个Element-plus Pagination分页

前言:后台系统分页肯定是离不开的,但是ui框架都很多,我们可以定义封装一种格式,所有项目按到这个结构来做. 实例: 第一步:在项目components组件新建一个分页组件,用来进行封装组件. 第二步:根据官方的进行定义,官方提供的这些,需要我们封装成动态模式 第三步:代码改造 <!-…

aspose-words基础功能演示

我们在Aspose.Words中使用术语“渲染”来描述将文档转换为文件格式或分页或具有页面概念的介质的过程。我们正在讨论将文档呈现为页面。下图显示了 Aspose.Words 中的渲染情况。 Aspose.Words 的渲染功能使您能够执行以下操作: 将文档或选定页面转换为 PDF、XPS、HTML、XAML、…

MySQL操作问题汇总

MySQL操作问题汇总 1.无法远程连接Ubuntu的MySQL2.ubuntu忘记mysql的root密码时的操作 1.无法远程连接Ubuntu的MySQL (1) 需要检查防火墙状态 > sudo ufw status #如果防火墙开启的情况&#xff0c;添加规则&#xff1a;允许3306端口开启 > sudo ufw allow 3306 (2) 需要…

计算机网络_1.6.3 计算机网络体系结构分层思想举例

1.6.3 计算机网络体系结构分层思想举例 1、实例引入&#xff08;用户在主机中使用浏览器访问web服务器&#xff09;2、从五层原理体系结构的角度研究该实例3、练习题 笔记来源&#xff1a; B站 《深入浅出计算机网络》课程 本节通过一个常见的网络应用实例&#xff0c;来介绍计…

【论文阅读笔记】Advances in 3D Generation: A Survey

Advances in 3D Generation: A Survey 挖个坑&#xff0c;近期填完摘要 time&#xff1a;2024年1月31日 paper&#xff1a;arxiv 机构&#xff1a;腾讯 挖个坑&#xff0c;近期填完 摘要 生成 3D 模型位于计算机图形学的核心&#xff0c;一直是几十年研究的重点。随着高级神经…

计算机设计大赛 深度学习+opencv+python实现昆虫识别 -图像识别 昆虫识别

文章目录 0 前言1 课题背景2 具体实现3 数据收集和处理3 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数&#xff1a;2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 4 MobileNetV2网络5 损失函数softmax 交叉熵5.1 softmax函数5.2 交叉熵损失函数 6 优化器SGD7 学…

H5 加密(MD5 Base64 sha1)

1. 说明 很多的时候是避免不了注册登录这一关的&#xff0c;但是一般的注册是没有任何的难度的&#xff0c;无非就是一些简单的获取用户输入的数据&#xff0c;然后进行简单的校验以后调用接口&#xff0c;将数据发送到后端&#xff0c;完成一个简单的注册的流程&#xff0c;那…