6大部分,20 个机器学习算法全面汇总!!建议收藏!(下篇)

上篇地址:6大部分,20 个机器学习算法全面汇总!!建议收藏!(上篇)-CSDN博客

上篇介绍了

接下来介绍新的内容

半监督学习算法

半监督学习算法结合了监督学习和无监督学习的元素,利用既有的标记数据和未标记数据来训练模型。

这样可以充分利用有限的标记数据,提高模型的性能和泛化能力,尤其适用于数据稀缺或昂贵标记的情况。

1、标签传播

将标签从已知样本传播到未知样本。

标签传播(Label Propagation)是一种半监督学习方法,通常用于图数据或网络数据中的节点分类问题。其基本原理是利用已知标记的数据节点(种子节点)来传播标签,从而对未标记的节点进行分类。标签传播算法试图使相邻节点的标签相似,从而实现对整个图数据的标签传播。

基本原理

1、种子节点:标签传播算法需要一些已知标记的数据节点,这些节点被称为种子节点或初始标签节点。通常,这些种子节点包含了一些数据的真实标签。

2、标签传播:算法开始时,种子节点的标签被用作初始标签。然后,通过迭代地更新未标记节点的标签,使其与相邻节点的标签相似。这个相似性通常基于数据节点之间的关系或相似性度量。

3、标签更新规则:标签传播算法通常使用以下规则来更新节点的标签:

  • 对于每个未标记节点,计算其相邻节点的平均标签(或加权平均标签)作为新的标签。

  • 重复上述步骤,直到标签不再发生显著变化或达到预定的迭代次数。

核心公式

标签传播算法的核心公式涉及到标签的更新规则。

通常使用以下公式来更新节点  i的标签 yi:

需要注意的是,标签传播算法的效果受到种子节点的选择、权重计算方法和收敛条件的影响。算法通常可以很好地处理图数据中的标签传播问题,但在某些情况下可能出现标签震荡或收敛到不稳定状态的问题,因此需要谨慎调整参数和监控算法的收敛情况。

2、自训练

自训练(Self-training)是一种半监督学习方法,其基本原理是通过已标记的数据和部分未标记的数据来进行模型训练和标签预测。自训练通常涉及以下步骤:

基本原理

1、已标记数据:首先,使用一小部分已标记的数据进行初始模型训练。这是传统的监督学习阶段,用于建立初始模型。

2、标签传播:接下来,使用已训练的模型来预测未标记数据的标签。这些预测的标签被添加到未标记数据上,以扩充已标记数据集。

3、再训练:使用扩充后的数据集(包括已标记数据和具有估计标签的未标记数据),重新训练模型。这个新模型通常能够更好地捕捉数据的分布和特征,因为它包含了更多的数据。

4、迭代:迭代执行标签传播和重新训练的步骤,直到满足停止条件(例如,达到最大迭代次数或标签预测不再发生明显变化)。

核心公式

自训练的核心公式涉及到标签预测和重新训练的过程。以下是一些关键的公式:

1、标签预测:使用已训练的模型来预测未标记数据的标签。通常,这涉及到计算每个类别的分数(例如,使用 softmax 函数),然后选择分数最高的类别作为预测的标签。对于分类问题,标签预测公式可以表示为:

2、重新训练:使用扩充后的数据集重新训练模型。通常,这包括使用已标记数据和具有估计标签的未标记数据来计算损失函数,并通过反向传播算法来更新模型参数。重新训练可以使用传统的监督学习算法进行。

自训练是一种利用未标记数据提高模型性能的有用方法,特别是在数据稀缺的情况下。然而,自训练也存在一些挑战,例如标签传播的误差可能会被积累,导致模型性能下降。因此,在应用自训练时需要仔细考虑数据的质量和迭代策略,以获得最佳性能。

强化学习算法

强化学习算法的目标是通过与环境的互动来学习如何采取行动以最大化累积奖励。

在强化学习中,Agent 通过观察环境的状态、选择行动并接收奖励来学习。它不需要显式的标签,而是通过尝试不同的行动来优化策略,以最大程度地提高长期累积奖励。强化学习广泛应用于自动控制、游戏、机器人、自动驾驶等领域,其中代理通过与环境的互动来学会逐渐提高性能。

1、Q-Learning

Q-Learning 是强化学习中的一种基本算法,用于解决马尔可夫决策过程(Markov Decision Process,MDP)中的单智能体问题。Q-Learning 的主要目标是学习一个值函数(Q值函数),该函数表示在每个状态下采取每个动作的预期回报。通过学习这个值函数,智能体可以在环境中选择最优的动作来最大化累积奖励。

基本原理

1、状态(State)和动作(Action):Q-Learning 基于马尔可夫决策过程,其中有一组状态和一组可用的动作。智能体根据当前状态选择动作,然后观察奖励和下一个状态,依此不断进行决策。

2、Q值函数:Q-Learning 的核心是学习一个Q值函数(也称为动作值函数),通常用  表示。这个函数表示在状态  下采取动作  的预期回报。

3、Bellman方程:Q值函数满足Bellman方程,该方程表示Q值函数与下一个状态的Q值之间的关系。Bellman方程通常如下所示:

4、策略(Policy):智能体根据Q值函数来选择动作的策略。通常,可以使用ε-greedy策略,以一定的概率选择具有最大Q值的动作,以便探索环境。

核心公式

Q-Learning 的核心公式是Q值函数的更新规则,通常使用以下公式来更新Q值函数:

Q-Learning 是一个强大的强化学习算法,可用于解决许多单智能体问题,包括机器人控制、游戏玩法优化和自动决策制定等应用。它是强化学习领域的重要基础,并已被扩展和改进以适应更复杂的问题和多智能体场景。

2、深度强化学习

深度强化学习(Deep Reinforcement Learning,DRL)是一种结合深度学习和强化学习的方法,用于解决复杂的决策问题。DRL的基本原理是通过深度神经网络(Deep Neural Networks)来估计和优化代理(Agent)在环境(Environment)中采取动作以最大化累积奖励的策略。以下是DRL的基本原理和一些核心公式:

基本原理

1、代理和环境:DRL中的问题通常被建模为一个代理与环境交互的过程。代理在环境中观察状态,采取动作,并获得奖励。

2、状态(State):状态是代理观察到的环境信息,它可以是部分可见的或完全可见的,取决于具体问题。

3、动作(Action):动作是代理在状态下可以选择的操作,它可以是离散的(例如,移动棋子的位置)或连续的(例如,控制机器人的速度)。

4、奖励(Reward):奖励是代理在执行动作后从环境中获得的数值反馈,表示动作的好坏。代理的目标是最大化累积奖励。

5、策略(Policy):策略定义了代理如何根据观察到的状态选择动作。它可以是确定性策略或随机策略。

6、值函数(Value Function):值函数估计了在当前状态或状态-动作对下获得累积奖励的预期值。值函数包括状态值函数(V值函数)和动作值函数(Q值函数)。

核心公式

1、马尔可夫决策过程(MDP):DRL通常基于马尔可夫决策过程来建模问题。MDP包括状态空间 、动作空间 、状态转移概率 、奖励函数  和折扣因子 。

2、Q-Learning更新规则:DRL中常用的Q-Learning更新规则是基于Bellman方程的更新。对于Q-Learning算法,Q值更新规则如下:

其中, 是状态-动作对  的  值, 是在状态  下采取动作  后获得的奖励, 是从状态  采取动作  后的下一个状态, 是在状态  下可能的动作, 是学习率, 是折扣因子。

3、策略梯度方法:DRL还使用策略梯度方法来优化策略网络,其中目标是最大化期望累积奖励。这涉及到计算策略梯度并使用梯度上升方法来更新策略网络参数。

4、深度神经网络:DRL中通常使用深度神经网络来估计Q值、策略或值函数。深度神经网络可以是卷积神经网络(CNN)或循环神经网络(RNN),根据问题的性质而定。

DRL方法如深度Q网络(DQN)、深度确定性策略梯度(DDPG)、A3C(Asynchronous Advantage Actor-Critic)等已经在许多领域取得了显著的成功,包括游戏、机器人控制、自动驾驶和自然语言处理等。它们通过组合深度学习和强化学习,使得代理能够在复杂的环境中自主学习并优化策略。

集成学习算法

集成学习算法通过将多个基本模型组合在一起来提高预测性能和泛化能力。

集成学习的核心思想是“众口难调”:通过组合多个模型的预测,可以降低单个模型的错误率,并在复杂的问题上取得更好的性能。常见的集成学习方法包括随机森林、梯度提升、AdaBoost等,它们通过不同的方式组合基本模型,如决策树或分类器,以改善整体预测效果。集成学习在各种机器学习任务中都表现出色,包括分类、回归和特征选择等。

1、随机森林

随机森林(Random Forest)是一种集成学习算法,主要用于分类和回归问题。它基于决策树构建,并通过随机性引入多个决策树的组合来提高模型的性能和鲁棒性。以下是随机森林的基本原理和核心概念,不涉及具体的数学公式。

基本原理

1、决策树集成:随机森林是一个由多个决策树组成的集成模型。每个决策树都是基学习器,用于解决分类或回归问题。

2、随机性:随机森林引入了随机性来创建多样性的决策树。这包括两种主要随机性因素:

  • 随机采样:从训练数据集中随机选择一个子样本,通常采用自助采样(Bootstrap Sampling)方法,这使得每个决策树的训练数据不同。

  • 随机特征选择:在每个节点上,只考虑特征的随机子集进行分割。这确保了每个决策树的节点划分不同,增加了多样性。

3、投票或平均:在分类问题中,随机森林通过多数投票来选择最终的类别。在回归问题中,它通过取多个决策树的平均预测值来得到最终的预测。

4、Bagging:随机森林的每个决策树都是通过自助采样(Bootstrap Sampling)方式从训练数据集中生成的。这意味着某些样本可能会多次出现在一个决策树的训练集中,而其他样本可能根本不出现。这种方法称为“装袋”(Bagging),有助于减小方差,提高模型的泛化性能。

5、特征重要性:随机森林可以估计每个特征的重要性,通过观察在决策树的分裂中每个特征被使用的频率以及它们对模型性能的影响来进行评估。

核心步骤

随机森林的核心思想是集成多个决策树的结果,通过投票或平均来得到最终的预测结果。可以概括为以下过程:

1、对于每个决策树:

  • 随机选择一个自助采样的训练数据集。

  • 在每个节点上,随机选择一个特征子集进行节点分裂。

  • 通过构建树结构来拟合模型,直到达到停止条件(例如,树的深度达到预定值或节点上的样本数小于阈值)。

2、对于分类问题,最终的预测结果是多个决策树的多数投票。对于回归问题,最终的预测结果是多个决策树的平均预测值。

总之,随机森林通过利用多个随机化的决策树来减小过拟合风险,并具有良好的泛化性能,使其成为一个强大的集成学习算法。

2、梯度提升

梯度提升(Gradient Boosting)是一种集成学习方法,用于解决回归和分类问题。它通过逐步迭代训练多个弱学习器(通常是决策树),每次迭代都校正前一轮的错误,从而提高模型的性能。

基本原理

1、弱学习器的组合:梯度提升是一个集成学习算法,它通过组合多个弱学习器(通常是决策树)来构建一个强大的集成模型。每个弱学习器在单独的情况下可能性能较差,但通过组合它们,可以获得更强大的模型。

2、迭代训练:梯度提升通过迭代的方式训练弱学习器。每次迭代都试图校正前一轮迭代的模型错误。这是通过拟合一个新的弱学习器来实现的,该学习器关注前一轮的残差或梯度,以便更好地拟合数据。

3、残差拟合:在回归问题中,每次迭代的目标是拟合前一轮模型的残差(即实际值与预测值之间的差异)。在分类问题中,目标是拟合前一轮模型的负梯度。

4、加权组合:弱学习器的预测结果按照一定权重进行组合,以获得最终的模型预测。通常,更准确的弱学习器会获得更高的权重。

5、正则化:梯度提升通常包括正则化项,以防止过拟合。正则化可以通过限制每次迭代中弱学习器的复杂性来实现。

核心思想

1、初始化一个初始模型,通常是一个常数(对于回归问题)或一个均匀分布的初始类别概率(对于分类问题)。

2、对于每次迭代(通常包括多个迭代):

  • 计算前一轮模型的残差(对于回归问题)或梯度(对于分类问题)。

  • 拟合一个新的弱学习器以减小残差或梯度。

  • 计算弱学习器的权重,通常根据拟合质量来确定。

  • 更新模型的预测,将新的弱学习器的预测与前一轮的预测组合。

3、最终的模型是所有弱学习器的组合,它的预测结果是所有弱学习器预测结果的加权组合。

梯度提升的一种常见变体是梯度提升树(Gradient Boosting Trees),其中每个弱学习器是决策树。著名的梯度提升算法包括梯度提升机(Gradient Boosting Machine,GBM)、XGBoost、LightGBM和CatBoost等。这些算法在实际问题中广泛应用,因为它们在性能和鲁棒性上表现出色。

3、AdaBoost

AdaBoost(Adaptive Boosting)是一种集成学习算法,主要用于二分类问题。它通过逐步训练多个弱学习器(通常是决策树或其他简单模型),并为每个弱学习器分配权重,以提高模型的性能。以下是AdaBoost的基本原理和一些核心概念,不涉及具体的数学公式。

基本原理

1、弱学习器的组合:AdaBoost的核心思想是组合多个弱学习器以构建一个强大的分类器。弱学习器是那些在单独情况下性能略高于随机猜测的模型。虽然弱学习器可能很弱,但通过它们的组合,可以得到一个强学习器。

2、样本权重:AdaBoost为每个训练样本分配一个权重,初始时,所有样本的权重相等。在每一轮的训练中,AdaBoost关注之前轮中被错误分类的样本,并为这些样本增加权重,以便在下一轮中更好地拟合它们。

3、弱学习器的权重:每个弱学习器也被分配一个权重,该权重表示其在最终分类器中的重要性。弱学习器的权重与其在每一轮训练中的性能相关,性能越好的学习器获得的权重越大。

4、加权投票:最终的分类器是所有弱学习器的加权组合,其中每个学习器的权重由其性能决定。分类时,每个学习器根据其权重投票,最终的预测结果由多数投票决定。

核心思想

AdaBoost 的核心公式涉及样本权重的更新和弱学习器的权重计算。

1、初始化样本权重:初始时,所有训练样本的权重相等。

2、对于每一轮的迭代:

  • 训练一个弱学习器,尽力减小前一轮中被错误分类的样本的权重。

  • 计算弱学习器的权重,通常与其性能有关。

  • 更新样本权重,增加被错误分类的样本的权重。

3、最终的分类器是所有弱学习器的加权组合,其中每个学习器的权重由其性能决定。

AdaBoost的关键思想是将多个弱学习器组合成一个强大的分类器,通过关注错误分类的样本和调整权重来逐步提高性能。它在实际问题中表现出色,尤其在处理复杂数据集时,它可以提供出色的性能。

深度学习算法

深度学习算法模仿人脑神经网络的结构和功能,通过多层神经网络来学习复杂的特征表示和模式。

深度学习的核心是深度神经网络,其中包括多个神经网络层(通常称为隐藏层),每一层都包含多个神经元。这些网络层之间的连接具有权重,通过大量的训练数据,这些权重被调整以最小化模型的预测误差。

1、卷积神经网络

卷积神经网络(Convolutional Neural Networks,CNN)是一种深度学习模型,主要用于图像处理和计算机视觉任务。CNN的基本原理是通过卷积层、池化层和全连接层来提取图像特征并进行分类。以下是CNN的基本原理和核心概念,以及一些核心公式。

基本原理

1、卷积操作:CNN使用卷积操作来捕获图像中的局部特征。卷积操作是通过将一个小的滤波器或卷积核与图像的不同位置进行卷积运算来实现的。这允许网络学习图像中的边缘、纹理和其他低级特征。

2、池化操作:在卷积层之后,CNN通常使用池化层来减小特征图的尺寸,同时保留最重要的特征。池化操作通常是最大池化(Max Pooling)或平均池化(Average Pooling)。

3、多层堆叠:CNN通常由多个卷积层和池化层堆叠而成,每一层都可以学习不同级别的特征,从低级特征(如边缘)到高级特征(如物体部分或整个物体)。

4、全连接层:在CNN的顶部,通常有一个或多个全连接层,用于将卷积和池化层的特征映射到最终的分类或回归输出。全连接层可以学习特征之间的复杂关系。

5、激活函数:每个卷积层和全连接层通常会应用一个激活函数,如ReLU(Rectified Linear Unit),以引入非线性性质。这有助于网络模型捕获非线性特征。

核心公式

虽然CNN的基本原理涉及卷积、池化和全连接操作,但它们可以用一些核心公式表示:

1、卷积操作:卷积操作可以用以下公式表示:

CNN的训练过程通常涉及反向传播算法,该算法用于计算损失函数的梯度并更新网络参数。尽管反向传播的详细数学公式相对复杂,但它是CNN训练的关键部分,通过梯度下降法来优化网络权重和偏置,以减小损失函数。CNN已经在图像分类、对象检测、语义分割和许多其他计算机视觉任务中取得了显著的成功。

2、循环神经网络

循环神经网络(Recurrent Neural Networks,RNN)是一类深度学习模型,主要用于处理序列数据,如时间序列、文本、音频等。RNN具有一种递归的结构,允许信息从当前时间步传递到下一个时间步,以捕捉序列中的时间依赖关系。以下是RNN的基本原理和一些核心概念,以及一些核心公式。

基本原理

1、递归结构:RNN具有递归结构,它在每个时间步接受输入并生成输出,同时维护一个隐藏状态(Hidden State),用于捕捉序列数据中的信息。隐藏状态在每个时间步根据当前输入和前一个时间步的隐藏状态进行更新。

2、时间依赖性:RNN的核心思想是捕捉序列数据中的时间依赖性。每个时间步的隐藏状态包含了来自前面时间步的信息,因此可以用来预测下一个时间步的输出。

3、参数共享:在RNN中,相同的权重和偏置被用于每个时间步的输入和隐藏状态的计算。这种参数共享使得RNN具有处理不定长序列的能力。

4、梯度消失和梯度爆炸:传统RNN存在梯度消失和梯度爆炸的问题,导致在训练深层RNN时难以捕捉长期时间依赖性。为了解决这个问题,许多改进型RNN模型已经被提出,包括长短时记忆网络(LSTM)和门控循环单元(GRU)等。

核心公式

虽然RNN的具体结构和变种有多种,以下是传统RNN的核心计算公式:

1、隐藏状态更新:RNN中的隐藏状态更新通常使用以下公式:

1、隐藏状态更新:RNN中的隐藏状态更新通常使用以下公式:

其中, 是时间步  的隐藏状态, 是时间步  的输入, 和  是权重矩阵, 是偏置。 是双曲正切函数,用于引入非线性。

2、输出计算:RNN的输出通常使用以下公式:

其中, 是时间步  的输出, 是权重矩阵, 是偏置。

3、时间步的循环:RNN通过将当前时间步的隐藏状态  传递给下一个时间步,从而实现信息的传递和时间依赖性的捕捉。

请注意,传统RNN存在梯度消失和梯度爆炸问题,因此在实际应用中,常常使用改进型RNN模型,如LSTM和GRU,来更好地处理长序列和时间依赖性。这些改进型模型引入了门控机制,以更好地控制梯度流动和捕捉长期依赖性。

3、Transformer

Transformer是一种深度学习模型,广泛应用于自然语言处理(NLP)任务,如机器翻译、文本生成和文本分类等。它在处理序列数据时采用了一种全新的架构,摒弃了传统的循环神经网络(RNN)和卷积神经网络(CNN),取得了显著的成功。

基本原理

1、自注意力机制(Self-Attention):Transformer的核心是自注意力机制,它允许模型在输入序列中的任何位置都能关注到其他位置的信息,而不受限于固定的窗口大小。这种注意力机制有助于捕捉长距离依赖关系。

2、多头注意力(Multi-Head Attention):Transformer将自注意力机制扩展为多个注意力头,每个头学习不同的注意力权重,以便同时关注不同特征子空间中的信息。多头注意力可以提高模型的表达能力。

3、位置编码(Positional Encoding):由于自注意力机制不包含序列的顺序信息,Transformer引入了位置编码来将每个输入位置的绝对位置信息嵌入到输入嵌入向量中。

4、编码器-解码器结构:Transformer通常由编码器和解码器组成。编码器用于处理输入序列,解码器用于生成输出序列。编码器和解码器都包含多层自注意力和全连接层。

5、残差连接和层归一化:每个子层(自注意力或全连接层)之后都采用了残差连接和层归一化,以稳定训练并促进信息流动。

核心公式

Transformer涉及许多数学细节,但以下是Transformer中的一些核心公式:

1、自注意力机制(Scaled Dot-Product Attention):自注意力机制的计算可以概括为以下几个步骤,其中  表示查询向量, 表示键向量, 表示值向量:

  • 计算注意力分数:

  • 计算加权和: 其中, 是查询和键的维度, 函数用于将注意力分数转化为权重。

2、多头自注意力(Multi-Head Self-Attention):多头自注意力的计算如下,其中  表示头的数量,、、 分别表示第  个头的权重矩阵:

  • 对每个头 ,计算 、、,然后应用自注意力机制。

  • 将所有头的结果拼接并乘以权重矩阵 。

3、位置编码(Positional Encoding):位置编码的计算通常采用正弦和余弦函数的组合,以将绝对位置信息嵌入到输入嵌入向量中。

4、编码器-解码器注意力(Encoder-Decoder Attention):在解码器中,编码器-解码器注意力用于将解码器的自注意力与编码器的输出进行关联,以便在生成输出序列时引入输入序列的信息。计算方法类似于自注意力,但查询来自解码器,而键和值来自编码器的输出。

Transformer模型的成功在NLP领域产生了革命性的影响,并已经应用于各种自然语言处理任务,如机器翻译、文本生成、文本分类、问答系统等。其灵活性和能力使其成为当今深度学习中的一个重要模型架构。

最后

好了,朋友们,上面咱们列举的 20 个机器学习的核心原理和思路,算是有效的帮助大家做了一个总结!每种算法都有其自身的优点和适用领域,选择算法取决于任务的性质和数据的特点。

喜欢的朋友可以收藏、点赞、转发起来!

谢谢观看。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[C++核心编程-08]----C++类和对象之运算符重载

🎩 欢迎来到技术探索的奇幻世界👨‍💻 📜 个人主页:一伦明悦-CSDN博客 ✍🏻 作者简介: C软件开发、Python机器学习爱好者 🗣️ 互动与支持:💬评论 &…

AVDemo漏洞平台黑盒测试

信息收集 说明一下: 因为是本地的环境,端口这些就不扫描了, 还有这个是某个dalao写的平台,也就检测不到什么cms了, 信息收集,端口,cms这些是必做的, 首先,这里先简单的…

致命错误: 用户 “system“ Password 认证失败 (kbjdbc: autodetected server-_enco

问题在于用户权限不足,修改kingbase安装目录data目录下的的文件sys_hba.conf,修改IPV4部分本地验证方式为trust即可 修改后,打开资源管理器,通过服务找到人大金仓服务,重新启动即可

有趣的css - 文字隐身术效果

大家好,我是 Just,这里是「设计师工作日常」,今天分享的是利用动画属性来模拟文字隐身消失的效果。 《有趣的css》系列最新实例通过公众号「设计师工作日常」发布。 目录 整体效果核心代码html 代码css 部分代码 完整代码如下html 页面css 样…

ip显示地址和实际地址不一样:原因解析与应对策略

在数字化时代,IP地址作为我们在互联网上的身份标识,其重要性不言而喻。然而,有时我们会遇到ip显示地址和实际地址不一样的情况,这不仅可能影响到我们的网络体验,还可能引发一系列安全和隐私问题。那么,造成…

嵌入式学习72-复习(字符设备驱动框架)

编辑 drivers/char/Kconfig 为了在make menuconfig是能够显示出我们写的驱动程序 make menuconfig 编辑 drivers/char/Makefile 才是真正把编写好的源文件加入到编译中去 make modules cp drivers/char/first_driver.ko ~/nfs/rootfs/

26版SPSS操作教程(高级教程第二十三章)

目录 前言 粉丝及官方意见说明 第二十三章一些学习笔记 第二十三章一些操作方法 时间序列模型 时间序列的建立和平稳化 数据假设 具体操作 定义时间变量 时间序列的平稳化 绘制相应的时间序列图 序列图 自相关图(autocorrelation chart) 对…

03-行为型模式(共10种)

上一篇: 02-结构型设计模式(共7种) 1. Strategy(策略模式) 策略模式是一种行为型设计模式,它定义了一系列算法,将每个算法封装到独立的类中,并使它们可以互相替换。这样可以使算法的变化独立于使用算法的客户端。 在 C 中,策略模式…

LeetCode-1953. 你可以工作的最大周数【贪心 数组】

LeetCode-1953. 你可以工作的最大周数【贪心 数组】 题目描述:解题思路一:贪心,关键点是找到(工作最长时间的工作longest )与(剩余其他工作加起来的时间总和rest )的关系。解题思路二:证明解题思路三:简化 题目描述&am…

【c++算法篇】滑动窗口

🔥个人主页:Quitecoder 🔥专栏:算法笔记仓 目录 1.长度最小的子数组2.无重复字符的最长子串3.最大连续1的个数 III4.将 x 减到 0 的最小操作数5.水果成篮6.找到字符串中所有字母异位词7.串联所有单词的子串8.最小覆盖子串 滑动窗…

系统架构师考试(二)

敏捷方法 CMMI代表Capability Maturity Model Integration,是一种用于评估和改进组织软件工程和系统工程的模型。CMMI提供一个框架,帮助组织评估其软件和系统工程的成熟度,该模型基于过程成熟度模型(CMM)和集成项目管理…

Java 如何去规避一些没用的类型转换?

在Java编程中,类型转换(Type Casting)是将一个数据类型的值转换为另一个数据类型的过程。这在某些情况下是必要的,但滥用类型转换会导致代码变得复杂、难以维护,并且可能引发运行时错误。规避不必要的类型转换不仅能提…

Online RL + IL : Active Policy Improvement from Multiple Black-box Oracles

ICML 2023 paper code 紧接上一篇MAMBA,本文在同种问题设定下的在线模仿学习方法。 Intro 文章提出了一种新的模仿学习算法,名为 MAPS(Max-aggregation Active Policy Selection)和其变体 MAPS-SE(Max-aggregation A…

Kibana使用

一、什么是Kibana   Kibana 是一个开源的分析和可视化平台,Kibana 提供搜索、查看和与存储在 Elasticsearch 索引中的数据进行交互的功能。开发者或运维人员可以轻松地执行高级数据分析,并在各种图表、表格和地图中可视化数据。 Kibana使用&#xff1a…

【御控物联】物联网协议

文章目录 一、前言二、协议清单三、技术资料 一、前言 如果一个人想要和全球各个国家贸易,那这个人就得懂各个国家的语言或者全球通用语言,同样,在物联网的世界里,各家设备也都拥有自己的语言(协议)&#…

JUnit5参数化用例(三)

JUnit5枚举参数的参数化: 使用枚举类作为测试数据枚举参数参数化注解EnumSource必须与ParameterizedTest结合使用 枚举参数化注解 -简单使用: 需要添加EnumSource注解测试方法传入枚举类作为参数 在执行前,我们需了解enum枚举的使用方式&…

弘君资本午评:沪指拉升涨0.48%,地产板块爆发,金融等板块上扬

16日早盘,两市股指盘中震动上扬,创业板指涨超1%;场内近3800股飘红,半日成交超5000亿元。 到午间收盘,沪指涨0.48%报3134.97点,深证成指涨0.83%,创业板指涨1.14%,两市算计成交5194亿…

在win10折腾Flowise:部署和尝试

Flowise 是一种低代码/无代码拖放工具,旨在让人们轻松可视化和构建 LLM 应用程序。 本地部署 操作系统: win10 由于网络、操作系统等各种未知问题,使用npm install -g flowise的方式,尝试了很多次,都没有部署成功&am…

AI大模型试用盘点(附体验网址)包含10多款大模型

【前言】目前我是用过的公开免费使用的文心一言、智谱清言比较好! 1、阿里云——通义千问 网址:https://tongyi.aliyun.com/ 简介:阿里达摩院推出的大模型,拥有千亿参数,可用于智能问答、知识检索、文案创作等场景。 演示: 功能大全: 2、科大讯飞——星火大模型…

数据库-索引结构(B-Tree,B+Tree,Hash,二叉树)

文章目录 索引结构有哪些?二叉树详解?B-Tree详解?BTree详解?Hash详解?本篇小结 更多相关内容可查看 索引结构有哪些? MySQL的索引是在存储引擎层实现的,不同的存储引擎有不同的索引结构,主要包…