朴素贝叶斯机器学习算法:从基础到高级

文章目录

  • 一、说明
  • 二、从一个简单例子入手
    • 2.1 简单示例
    • 2.2 朴素贝叶斯算法的直觉解释
  • 三、在训练阶段,朴素贝叶斯内部会发生什么?
    • 3.1 朴素贝叶斯如何处理数值数据?
    • 3.2 如果数据分布不是高斯分布怎么办?
    • 3.3 朴素贝叶斯的数值稳定性问题:
    • 3.4 朴素贝叶斯的零概率问题:(拉普拉斯加法平滑)
  • 四、使用没有拉普拉斯平滑的基本朴素贝叶斯方法,
  • 五、朴素贝叶斯的类型
    • 5.1 高斯朴素贝叶斯:
    • 5.2 . 分类朴素贝叶斯:
    • 5.3 多项式朴素贝叶斯:
    • 5.4 伯努利朴素贝叶斯

一、说明

朴素贝叶斯算法是一系列概率分类算法,用于文本分类等任务,例如垃圾邮件过滤和情感分析。它假定特征彼此独立,这意味着一个特征的存在与否不会影响另一个特征的概率。这个假设虽然过于简单,但允许朴素的贝叶斯分类器在实践中表现良好,同时计算效率高。

该算法基于概率中的贝叶斯定理。
在这里插入图片描述
朴素贝叶斯分类器在同质类型的输入特征上给出了很好的结果,这就是为什么它在文本数据任务(如情感分析)上给出了非常好的结果。

二、从一个简单例子入手

2.1 简单示例

我们用一个简单的示例,我们假如要提取出天气对翻越可可西里无人区的影响,提取出气候影响的模型,便可预测任意天气下,考察对穿越可可西里的可能性预测。我们先将历史中,穿越可可西里的天气资料,如下表:

天气气温湿度风天是否成功
日照天无风
日照天无风
阴天无风
雨天中等无风
雨天无风
雨天有风
阴天有风
日照天中等无风
日照天正常无风
雨天中等正常无风
日照天中等正常有风
阴天中等有风
阴天无风
雨天中等有风

以下,我们将演示如何使用贝叶斯理论的用法。

2.2 朴素贝叶斯算法的直觉解释

下面显示的数据集基本上是基于这个人是否能穿越可可西里,基于天气条件,如天气、温度、湿度和风,四个要素。

为了解决根据天气条件(天气、温度、湿度和风力)预测一个人是否会穿越的问题,我们可以应用朴素贝叶斯算法。给定特定的天气条件,例如天气 = 晴天,温度 = 凉爽,湿度 = 正常,大风 = 真,我们想预测这个条件穿过可可西里的可能性。

根据贝叶斯定理, P ( A ∣ B ) = ( P ( B ∣ A ) ∗ P ( A )) / P ( B ) P(A|B) = (P(B|A) * P(A)) / P(B) PAB=PBAPA))/PB

对于我们的例子,假设 Y= 能穿越,N= 不能穿越

B = { 天气 = 晴天,温度 = 凉爽,湿度 = 正常,风 = 真 } B= \{天气 = 晴天,温度 = 凉爽,湿度 = 正常,风 = 真\} B={天气=晴天,温度=凉爽,湿度=正常,风=}

因此,为了预测某个团队是否能穿越可可西里,我们需要计算以下概率:
P ( Y ∣ B ) P(Y|B) PYB P ( N ∣ B ) P(N|B) PNB在两者之间,我们根据这一点来决定这个团队是否穿越成功。

根据贝叶斯定理,我们可以按如下方式计算这些概率:

P ( Y ∣ B ) = ( P ( B ∣ Y ) ∗ P ( Y )) / P ( B ) P ( N ∣ B ) = ( P ( B ∣ N ) ∗ P ( N )) / P ( B ) P(Y|B) = (P(B|Y) * P(Y)) / P(B) \\ P(N|B) = (P(B|N) * P(N)) / P(B) PYB=PBYPY))/PBPNB=PBNPN))/PB

这里:

P(B|Y)是观察天气条件B的概率,假设这个团队成功穿越,
P(B|N)是观察天气条件B的概率,假设这个团队不能成功穿越;
P(Y)是成功穿越的先验概率(成功穿越的总概率),
P(N)是成功穿越的先验概率(不成功穿越的总概率),
P(B) 是观察天气条件 B 的概率,无论该人是否穿越。
在这两种情况下,我们用 P(B) 除法,这对两者都是通用的,所以我忽略了这个项,新方程变成了:

P ( Y ∣ B ) = P ( B ∣ Y ) ∗ P ( Y ) 和 P ( N ∣ B ) = P ( B ∣ N ) ∗ P ( N ) P(Y|B) = P(B|Y) * P(Y)\\ 和 P(N|B) = P(B|N) * P(N) PYB=PBYPYPNB=PBNPN

从上面的数据集中, P ( Y ) = 9 / 14 和 P ( N ) = 5 / 14 P(Y) = 9/14 和 P(N) = 5/14 PY=9/14PN=5/14

和 P(B|Y) = P(晴天∩凉爽∩正常∩ 真 |是)
和 P(B|N) = P(晴天∩凉爽∩正常∩ 真 |否)

但是在表中没有这样的条件同时匹配,
所以P(B|Y) = 0 和 P(B|N) =0

因此,P(Y|B) = 0 和 P(N|B) =0

那么,问题来了,我们将如何预测?

这里出现了一个朴素的假设,它假设所有输入列都是相互独立的。因此,我们改变了计算 P(晴天∩凉爽∩正常∩的方法 True |是的),我们计算如下:

P(晴天∩凉爽∩正常∩ 真 |是) = P(晴天 |是) * P(酷 |是) * P(正常 |是) * P(True |是的)

同样,

P(晴天∩凉爽∩正常∩ 真 |No) = P(晴天 |否) * P(酷 |否) * P(正常 |否) * P(真 |否)

在上表的帮助下,P(sunny |是)= 2/9,P(冷却 |是) = 3/9, P(正常 |是) = 6/9, P(True |是)= 3/9

并计算,P(Y|B) = 2/9 * 3/9 * 6/9 * 3/9 * 9/14 = 972/91854

类似地,我们可以计算 P(N |B)在给定的两个中哪个更大,这是我们的预测。

因此,机器学习算法中的朴素贝叶斯算法以这种方式工作。

三、在训练阶段,朴素贝叶斯内部会发生什么?

在朴素贝叶斯算法的训练阶段,所有可能的特征值和类组合的概率都以哈希格式计算和存储。这涉及估计给定每个类的类的先验概率和特征值的条件概率。在测试阶段,该算法根据观察到的特征值检索相应的概率,将它们相乘,并提供最终输出,指示预测的类别。通过在训练期间预计算和存储概率,测试阶段变得更加高效,因为它涉及简单的查找和乘法运算,而不是每次都重新计算概率。

3.1 朴素贝叶斯如何处理数值数据?

假设我有一个数据集,给出了该人的年龄以及是否结婚。
在这里插入图片描述

我今年 46 岁,我想使用朴素贝叶斯预测此人是否已婚。所以我需要计算 P(Y | 46) 和 P(N | 46)。但是在给定的表格中,给定的年龄可能不存在,那么这个时间这些概率就变成了零。为了解决这个问题,我们假设我们的 Age 列遵循高斯分布,并根据此分布计算 μ 和 σ 和 x= 46,并将所有值放入高斯分布函数中:

在这里插入图片描述
现在我们计算 f(x),它给出了相应年龄的概率。因此,通过这种方式,使用概率密度函数,我们可以对数值数据使用朴素贝叶斯算法。

3.2 如果数据分布不是高斯分布怎么办?

数据转换:根据数据的性质,可以应用变换以使其更正态分布。常见的变换包括对数变换、平方根变换和倒数变换。
替代发行版:如果您知道或怀疑您的数据遵循特定的非正态分布(例如,指数分布、泊松分布等),则可以在计算似然时修改朴素贝叶斯算法以假定该特定分布。
离散化:您可以通过对值进行分箱将连续数据转换为分类数据。有多种方法可以确定条柱,包括等宽条柱、等频条柱,或使用更复杂的方法,如 k-means 聚类。
对数据进行分箱后,可以使用标准的多项式或伯努利朴素贝叶斯方法。
核密度估计:一种估计随机变量概率密度函数的非参数方法。当分布未知时,可以使用核密度估计。
使用其他型号:如果上述选项都不起作用,则最好考虑使用不同的分类算法,该算法不会对特征的分布做出强有力的假设,例如决策树、随机森林或支持向量机。

3.3 朴素贝叶斯的数值稳定性问题:

在朴素贝叶斯算法中,数值稳定性可能是一个问题,尤其是在处理非常小的概率时。此问题是由于概率的乘法而产生的,这可能导致值极小,这些值可能会下溢或导致浮点计算中的精度损失。

用于解决朴素贝叶斯中数值稳定性的一种常用技术是使用对数概率而不是原始概率。通过采用概率对数,乘法运算转换为求和运算。这有助于缓解下溢问题,因为添加对数概率在数值上比直接乘以小概率更稳定。

在处理对数概率时,朴素贝叶斯分类的公式略有变化。不是将概率相乘,而是将对数概率相加,并选择结果值最高的类作为预测类。这种方法在解决数值稳定性问题的同时保持了概率的相对排序。

3.4 朴素贝叶斯的零概率问题:(拉普拉斯加法平滑)

拉普拉斯加法平滑是朴素贝叶斯算法中常用的一种技术,用于处理零概率问题。它用于避免在分类过程中遇到看不见的特征和类组合的问题。

在朴素贝叶斯中,在计算概率时,可能会遇到测试数据中未在训练数据中观察到的特征值。因此,此类组合的条件概率为零,这可能导致不准确的预测。

拉普拉斯加法平滑通过在估计概率时在分子和分母上添加一个小常数(通常为 1)来解决这个问题。这样,即使未在训练数据中观察到特定类的特定特征值,它仍然具有非零概率。

P(特征值 | 类) = (给定类 + α 的特征值计数) / (类计数 + n * α)

这里α通常取 1,n 的值取决于您使用的朴素贝叶斯类型。

让我们举个例子来更清楚地理解朴素贝叶斯中的拉普拉斯加法平滑:

假设我们有一个电影评论数据集,根据他们的情绪标记为正面 (+) 或负面 (-)。我们想使用朴素贝叶斯根据某些单词的出现将新评论分类为正面或负面。

下面是一个简化的训练数据集:
在这里插入图片描述
现在,假设我们想对新评论进行分类:“精彩的电影”。我们需要计算每个类(正和负)的概率,给定评论中出现的特定单词。

四、使用没有拉普拉斯平滑的基本朴素贝叶斯方法,

我们会遇到一个问题。“太棒了”这个词不会出现在正面或负面评论的训练数据中。因此,条件概率 P(“Fantastic” | +) 和 P(“Fantastic” | -) 将为零。当我们将这些概率相乘以计算 P(+ |“神奇的电影”)和P(- |“精彩的电影”),结果概率也为零。

如果没有拉普拉斯加法平滑,朴素贝叶斯分类器将无法提供任何预测,因为它遇到的概率为零。

现在,让我们通过在分子和分母上添加一个小常数(例如,1)来应用拉普拉斯平滑。应用拉普拉斯平滑后,正类和负类的“奇妙”概率变为非零。

这种调整允许朴素贝叶斯分类器对看不见的特征组合进行预测。通过添加常数,拉普拉斯平滑可确保概率不会变为零,并提供更稳健、更可靠的概率估计。

综上所述,朴素贝叶斯采用拉普拉斯加法平滑处理零概率问题,提高分类器的泛化能力。它允许在测试数据中遇到看不见的特征组合时进行预测。
使用拉普拉斯加法平滑系数“α”的朴素贝叶斯分类器中的偏差-方差权衡:
如果 alpha 值设置为零(无平滑),朴素贝叶斯分类器可能会过度拟合训练数据并产生过于自信的预测。这是因为分类器为看不见的特征值分配了零的概率,从而导致估计值有偏差。在这种情况下,模型可能具有低偏差但高方差。例如:

假设我们有一个二元分类问题,根据两个特征来预测电子邮件是否是垃圾邮件:“金钱”一词的存在和“彩票”一词的存在。我们在电子邮件及其相应标签的数据集上训练朴素贝叶斯分类器。

在没有平滑处理 (alpha = 0) 的情况下,我们假设训练数据中没有一个垃圾邮件包含“彩票”一词。在预测阶段,当分类器遇到包含单词“lottery”的测试电子邮件时,它会为事件“spam”分配零概率,给定特征“lottery”。这是因为它在训练期间没有观察到垃圾邮件类中的“彩票”一词。

因此,分类器将自信地将任何包含“彩票”一词的电子邮件归类为非垃圾邮件,即使它实际上是具有其他垃圾邮件相关功能的垃圾邮件。这种过度自信的预测是由于分配给看不见的特征值的概率为零。

在这种情况下,分类器将具有低偏差,因为它通过为看不见的特征值分配零概率来完美地拟合训练数据。但是,它将具有很高的方差,因为它无法很好地泛化到看不见的实例。

通过引入具有非零 alpha 值(如 alpha = 1)的拉普拉斯平滑,分类器将非零概率分配给看不见的特征值。它将观测到的特征值的概率质量重新分配到看不见的特征值,从而减少偏差并避免零概率。

使用拉普拉斯平滑,分类器将为给定特征“lottery”的事件“spam”分配一个小的非零概率。这允许模型做出更合理的预测,同时考虑其他特征和数据的整体分布。它减少了过度拟合,并改进了对看不见的实例的泛化,在偏差和方差之间取得了更好的平衡。

另一方面当 alpha 非常大时,添加的伪计数 (alpha) 在训练数据中实际观察到的计数中占主导地位。因此,平滑概率在所有特征值中变得非常相似,从而降低了模型的判别能力。这种过度平滑会导致朴素贝叶斯分类器变得过于保守,对数据中的特定模式不太敏感。

在极端情况下,当 alpha 设置为无穷大时,每个特征值的所有概率都相等,从而产生均匀分布。这基本上完全忽略了观察到的数据,并为所有可能的结果分配了相等的概率。这种极端的过度平滑导致泛化能力差和重要判别信息的丢失。

让我们考虑一个简单的例子,根据两个特征的存在将电子邮件分类为垃圾邮件或非垃圾邮件:“金钱”一词和“彩票”一词。我们有一个训练数据集,其计数如下:

垃圾邮件:100 次出现“金钱”,20 次出现“彩票”。
非垃圾邮件:“金钱”出现 10 次,“彩票”出现 90 次。
现在,让我们来看看不同 alpha 值对朴素贝叶斯分类器分配的概率的影响:

当然!让我们考虑一个简单的例子,根据两个特征的存在将电子邮件分类为垃圾邮件或非垃圾邮件:“金钱”一词和“彩票”一词。我们有一个训练数据集,其计数如下:

垃圾邮件:100 次出现“金钱”,20 次出现“彩票”。
非垃圾邮件:“金钱”出现 10 次,“彩票”出现 90 次。
现在,让我们来看看不同 alpha 值对朴素贝叶斯分类器分配的概率的影响:

无平滑 (alpha = 0):在没有任何平滑的情况下,如果我们遇到一封新电子邮件,其中包含训练数据中未看到的特征值,则其概率将为零。在这种情况下,如果电子邮件中不存在“金钱”一词,则无论是否出现“彩票”,它成为垃圾邮件的概率都将为零。这种灵活性的缺乏会导致过拟合。
中度平滑 (alpha = 1):使用拉普拉斯平滑,我们将伪计数 1 添加到所有特征出现中。概率计算如下:
P(“money” | spam) = (100 + 1) / (100 + 10 + 2) = 0.5038
P(“彩票”|垃圾邮件) = (20 + 1) / (100 + 10 + 2) = 0.1887
P(“money” | non-spam) = (10 + 1) / (10 + 90 + 2) = 0.1098
P(“彩票”|非垃圾邮件) = (90 + 1) / (10 + 90 + 2) = 0.8902
有了这些概率,我们可以对新电子邮件进行分类。但是,如果新电子邮件包含以前未见过的功能值(例如,“头奖”),则其概率仍为零。这限制了模型在观测特征值之外进行泛化的能力。

  1. 极端平滑 (alpha = 1000):现在,让我们考虑一个非常大的 alpha 值。概率计算如下:

P(“money” | spam) = (100 + 1000) / (100 + 10 + 2 * 1000) = 0.1887
P(“彩票” | 垃圾邮件) = (20 + 1000) / (100 + 10 + 2 * 1000) = 0.1887
P(“money” | 非垃圾邮件) = (10 + 1000) / (10 + 90 + 2 * 1000) = 0.1098
P(“彩票”|非垃圾邮件) = (90 + 1000) / (10 + 90 + 2 * 1000) = 0.1098
如您所见,垃圾邮件和非垃圾邮件类的所有概率都变得相同。这种极端的过度平滑会导致分类器变得过于保守,并失去根据观察到的特征值区分两个类的能力。因此,模型的性能会受到影响,并且与训练数据拟合不足。

总之,拉普拉斯平滑中非常大的 alpha 值会导致过度平滑,其中所有特征出现都被分配了相似的概率。这会导致欠拟合情况,即模型对观察到的数据变得不那么敏感,并且在泛化到新的、看不见的实例时表现不佳。

五、朴素贝叶斯的类型

**在这里插入图片描述

5.1 高斯朴素贝叶斯:

当所有输入特征都是数值时,则使用高斯朴素贝叶斯。拉普拉斯加性平滑不适用于高斯朴素贝叶斯,因为对于任何输入特征,这里的概率永远不会为零。
在这里插入图片描述

5.2 . 分类朴素贝叶斯:

当所有输入特征都是分类的时,此时使用分类朴素贝叶斯。在本例中应用拉普拉斯加法平滑时,“n”表示特定输入列的唯一特征值或类别的数量。

5.3 多项式朴素贝叶斯:

多项式朴素贝叶斯是朴素贝叶斯算法的一种变体,专为文本分类问题而设计,其中特征表示文档中单词的频率或出现次数。它通常用于自然语言处理任务,例如情绪分析、垃圾邮件过滤、主题分类和文档分类。

在多项式朴素贝叶斯中,特征通常表示为术语频率(例如单词在文档中出现的次数)或 TF-IDF(术语频率-反向文档频率)值,该值同时考虑了文档中单词的频率及其在整个数据集中的稀有性。

让我们举个例子来理解多项式朴素贝叶斯。
在这里插入图片描述
上表表示 docID,该文档中出现了不同的单词。训练集包含四个不同的文档,根据单词,我们需要预测 docID 5 是否来自中国。现在应用基于计数的词袋,我将每个文档转换为词频表,其中列代表不同的单词,行代表每个文档。
在这里插入图片描述
现在对于文档 5,我们需要预测它是否是 c= 中国。

因此,对于上述预测,我们需要计算
,P(Yes |中文=3,北京=0,上海=0,澳门=0,东京=1,日本=1)和P(否 |中国=3,北京=0,上海=0,澳门=0,东京=1,日本=1)

假设,B=(中国=3,北京=0,上海=0,澳门=0,东京=1,日本=1)

P(是 |B) = P(是) * P(B |是)
P(是)= 3/4,

P(中文 |是的)= 5 + 1/8+6 = 6/14,这里在分子中加上 1,在分母中加上 6 表示拉普拉斯加法平滑,alpha=1 和 n=6,因为 n 表示不同单词的总数。

P(北京 |是)= 1+1/8+6 = 2/14
P(上海 |是) = 1+1/8+6 = 2/14
P(澳门 |是) = 1+1/8+6 = 2/14
P(东京 |是) = 0+1/8+6= 1/14
P(日本 |是)= 0+1/8+6= 1/14

同样,所有这些概率也是针对 No 选项计算的,

P(No) = 1/4
P(北京 |No)= 0+1/3+6 = 1/9
P(上海 |No) = 1+1/3+6 = 1/9
P(澳门 |No) = 0+1/3+6 = 1/9
P(东京 |No) = 1+1/3+6= 2/9
P(日本 |No) = 1+1/3+6= 2/9
P(中文 |否) = 1+1/3+6 = 2/9

P(是 |B) = 3/4 * (6/14)³ *1/14 * 1/14 = 0.0003
P(否 |B) = 1/4 * (2/9)³ * 2/9 * 2/9 = 0.0001

所以对于文档 5 来自中国,因为 P( 是 |B) > P(否 |B).

5.4 伯努利朴素贝叶斯

伯努利朴素贝叶斯常用于特征为二进制或布尔变量的场景。在伯努利朴素贝叶斯中,输入数据表示为二进制特征向量,其中每个特征表示特定属性的存在与否。例如,在文本分类中,每个特征都可以对应于文档中特定单词的存在与否。

让我们举个例子来理解伯努利朴素贝叶斯。
在这里插入图片描述
上表表示 docID,该文档中出现了不同的单词。训练集包含四个不同的文档,根据单词,我们需要预测 docID 5 是否来自中国。现在应用二进制词袋,我将每个文档转换为二进制词频表,其中列代表不同的单词,行代表每个文档。
在这里插入图片描述
现在对于文档 5,我们需要预测它是否是 c= 中国。

因此,对于上述预测,我们需要计算
,P(Yes |中文=1,北京=0,上海=0,澳门=0,东京=1,日本=1)和P(否 |中国=1,北京=0,上海=0,澳门=0,东京=1,日本=1)

假设,B=(中国=1,北京=0,上海=0,澳门=0,东京=1,日本=1)

P(是 |B) = P(是) * P(B |是)
P(是)= 3/4,

伯努利随机变量的概率由下式给出,
P(X=K) = PK + (1-P)(1-K)

P(中文=1 |是的) = 3 +1/3+2 =4/5 ,因为这里 K=1
和 P(X=1) = P*1 +0 = P ,P 表示概率为 1,我也对概率应用了拉普拉斯加法平滑。

P(北京=0 |是)= 2+1/3+2 = 3/5
P(上海=0 |是) = 2+1/3+2 = 3/5
P(澳门=0 |是) = 2+1/3+2 = 3/5
P(Tokyo=1 |是) = 0+1/3+2 = 1/5
P(日本=1 |是)= 0+1/3+2 = 1/5

同样,所有这些概率也是针对 No 选项计算的,

P(No) = 1/4
P(北京 =0|否)= 1+1/1+2 = 2/3
P(上海=0 |否) = 1+1/1+2=2/3
P(澳门=0 |否) = 1+1/1+2=2/3
P(东京=1 |否) = 1+1/1+2=2/3
P(日本=1 |No) = 1+1/1+2=2/3
P(中文=1 |否) = 1+1/1+2=2/3

P(是 |B) =3/4 *4/5 * 3/5 * 3/5 * 3/5 *1/5 *1/5 = 0.005
P(否 |B) = 1/4 * 2/3 * 2/3 * 2/3 * 2/3 * 2/3 * 2/3= 0.022

因此,对于文档 5 不是来自中国,因为 P( No| B) > P(Yes |B).

总之,朴素贝叶斯算法是一个强大而高效的概率分类器。它通过假设分布或应用变换来处理数值数据。数值稳定性通过使用对数概率来解决,拉普拉斯平滑用于处理零概率。平滑参数的选择会影响偏差-方差的权衡。

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

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

相关文章

单片机第五季-第八课:STM32CubeMx和FreeRTOS

1,FreeRTOS背景介绍 RTOS简介: 实时操作系统,本用于追求实时性的嵌入式系统,典型:ucos/uclinux/vxworks; 特点:中断响应快、一般可嵌套中断、使用实地址、多任务; (实…

Vue CLI,Vue Router,Vuex

前言 Vue CLI、Vue Router 和 Vuex 都是 Vue.js 生态系统中的重要组成部分,它们在构建 Vue 应用程序时扮演着关键角色。 Vue CLI Vue CLI 介绍 Vue CLI 是 Vue.js 的官方命令行工具,用于快速搭建 Vue.js 项目。它提供了一个图形界面(通过…

成都爱尔周进院长提醒毕业生摘镜,术式如何挑

高考完迎来一个悠长假期,考后放松的同时,也有不少同学开始“准备”。 为奔赴梦想,为了理想的专业和学校,不少人决定摘镜。 不少专业有视力要求,且不同专业方向的要求各有不同。我们先来看看有视力要求的专业有哪些&am…

推荐一款可以下载B站视频和音频的工具

cobalt是一个免费的下载网站,主要是用于载视频和音频。只要你把相应的网址复制下来,然后打开cobalt网站,黏贴网址,选择要下载的格式,就可以下载相应的音频或者视频了。 该网站非常简洁,使用也很简单。目前只…

7 款便捷好用的AI API

AI API(人工智能应用程序接口)是一种软件中间件,它允许开发者和企业通过编程方式访问和集成人工智能服务到他们自己的应用程序、网站或系统中。AI API通常由专业的AI服务提供商开发和维护,使得用户无需深入了解复杂的AI算法和模型…

TVS的原理及选型

目录 案例描述 TVS管的功能与作用: TVS选型注意事项: 高速TVS管选型 最近项目中遇到TVS管选型错误的问题。在此对TVS的功能及选型做一个分享。 案例描述 项目中保护指标应为4-14V,而选型的TVS管位SMJ40CA,其保护电压为40V未…

昇思25天学习打卡营第1天|快速入门

一、简介: 本节通过MindSpore已经封装好的API,快速实现一个深度学习模型的数据集准备、训练评估,模型参数保存和加载,对新手朋友十分友好。这里非常感谢华为昇思团队在算力和代码方面的指导。 二、环境准备: 在开始…

【LeetCode 动态规划】买卖股票的最佳时机问题合集

文章目录 1. 买卖股票的最佳时机含冷冻期2. 买卖股票的最佳时机Ⅳ ---- 只允许交易 k 次🖊 1. 买卖股票的最佳时机含冷冻期 题目链接🔗 🍎题目思路: 🍎题目代码: class Solution { public:int maxProfi…

【面试八股总结】Redis数据结构及底层实现

一、五种基本数据结构 Redis 提供了丰富的数据类型,常见的有五种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合&#xff0…

Studying-代码随想录训练营day14| 226.翻转二叉树、101.对称二叉树、104.二叉树的最大深度、111.二叉树的最小深度

第十四天,(ง •_•)ง💪💪,编程语言:C 目录 226.翻转二叉树 101.对称二叉树 100.相同的树 572.另一个树的子树 104.二叉树的最大深度 559.n叉树的最大深度 111.二叉树的最小深度 总结 226.翻转二叉树 文档讲…

建筑八大员证报名一寸彩色照片要求及手机自拍方法解读

在建筑行业,八大员证的持有者是广受尊重的专业人士。然而,要成为一名合格的八大员,首先必须通过资格审核和报名流程。其中重要的一步就是提交一寸彩色照片,以确保个人信息准确无误。那么,你是否清楚报名时照片的要求以…

milvus元数据解析工具milvusmetagui介绍使用

简介 milvusmetagui是一款用来对milvus的元数据进行解析的工具,milvus的元数据存储在etcd上,而且经过了序列化,通过etcd-manager这样的工具来查看是一堆二进制乱码,因此开发了这个工具对value进行反序列化解析。 在这里为了方便交…

深圳中小企业融资攻略,贷款方法大盘点!

中小企业融资这事,可不是一个简单的事情。资金对中小企业来说,就像血液对人体一样重要。企业发展离不开资金支持,特别是在今年这个环境下,政策对中小企业还挺友好的。今天讲解一下中小微企业常用的几种贷款方法。希望能让大家更明…

基于STM32和人工智能的自动驾驶小车系统

目录 引言环境准备自动驾驶小车系统基础代码实现:实现自动驾驶小车系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统4.4 用户界面与数据可视化应用场景:自动驾驶应用与优化问题解决方案与优化收尾与总结 1. 引言 随着人工智能和嵌入式系统技术的…

pikachu靶场之XSS漏洞测试

一、环境配置 1.pikachu官网下载 下载地址:https://github.com/zhuifengshaonianhanlu/pikachu 2.百度网盘(里面含有pikachu跟phpstudy) 链接:pikachu下载 密码:abcd 配置:pikachu下载及安装-图文详解…

【尚庭公寓SpringBoot + Vue 项目实战】登录管理(十八)

【尚庭公寓SpringBoot Vue 项目实战】登录管理(十八) 文章目录 【尚庭公寓SpringBoot Vue 项目实战】登录管理(十八)1、登录业务介绍2、接口开发2.1、获取图形验证码2.2、登录接口2.3、获取登录用户个人信息 1、登录业务介绍 登…

keil5显示内存和存储占用百分比进度条工具

简介 [Keil5_disp_size_bar] 以进度条百分比来显示keil编译后生成的固件对芯片的内存ram和存储flash的占用情况, 并生成各个源码文件对ram和flash的占比整合排序后的map信息的表格和饼图。 原理是使用C语言遍历当前目录找到keil工程和编译后生成的map文件 然后读取工程文件和m…

shadertoy-安装和使用

一、安装vscode 安装vscode流程 二、安装插件 1.安装glsl编辑插件 2.安装shader toy插件 三、创建glsl文件 test.glsl文件 float Grid(float size, vec2 fragCoord) {vec2 r fragCoord / size;vec2 grid abs(fract(r - 0.5) - 0.5) / fwidth(r);float line min(grid…

Weevil-Optimizer象鼻虫优化算法的matlab仿真实现

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 Weevil-Optimizer象鼻虫优化算法的matlab仿真实现,仿真输出算法的优化收敛曲线,对比不同的适应度函数。 2.测试软件版本以及运行结果展示…

李宏毅2023机器学习作业HW06解析和代码分享

ML2023Spring - HW6 相关信息: 课程主页 课程视频 Sample code HW06 视频 HW06 PDF 个人完整代码分享: GitHub | Gitee | GitCode P.S. HW06 是在 Judgeboi 上提交的,出于学习目的这里会自定义两个度量的函数,不用深究,遵循 Sugge…