当前位置: 首页 > news >正文

关于机器学习的一份总结

在之前的文章中分别有详细的关于机器学习中某一学习算法的介绍,但缺少一个总体关于机器学习的总结,所以在这篇文中就是关于机器学习的一份总结。

在最近的日子中,人工智能日益火热起来,而机器学习是其中举足轻重的一部分,它在各个领域中都有广泛的应用,比如气象学中对于天气的预测、在经济学中对于未来的股票、房价等的预测、或者在生物学中对于生物种类的自动化区分等。接下来是对于机器学习的详细介绍:

一、机器学习的分类

首先来看关于机器学习的分类部分:

1.1 监督学习

关于“监督”一词是指在进行模型训练用的数据是带有标签的,而标签则是指对于每行数据专家都已经进行人工的分类,有了正确答案,就像考试中的选择题,每道选择题都有正确答案,这个答案就可以理解为标签,这样的题就可以理解为有监督的。 而监督学习有两种任务,分别是回归与分类,回归是对于连续性数据而言的,即是指对于一组连续的数据根据它以往的表现去预测未来的数值,而用作进行回归任务的模型一般有线性回归模型、岭回归模型、Lasso回归模型、回归型支持向量机与决策树。

对于前三种在此详细说明一下,首先是线性回归模型,关于它有公式如下:

y=w\cdot x+b+\epsilon

其中,w是斜率系数,y是因变量,x是自变量,b是截距,而\epsilon则是误差项。 然后对于其中的误差可以考虑加入惩罚项,也就是正则化,而对于正则化分为两种,分别是L1正则化与L2正则化,对应的就得到了Lasso回归与岭回归模型。其中关于L1正则化与L2正则化的表达式分别为:

L1:     J(\beta)_{L1} = \sum_{i=1}^{n}(y_i - X_i\beta)^2 + \lambda \sum_{j=1}^{p}|\beta_j|

L2:    J(\beta)_{L2} = \sum_{i=1}^{n}(y_i - X_i\beta)^2 + \lambda \sum_{j=1}^{p}\beta_j^2

接着,来看分类算法,常见分类算法有对数几率回归(即逻辑回归)、决策树、SVM。先来说明逻辑回归,逻辑回归就是将线性回归加以改造,将之加入一个sigmoid函数,而这个函数十分重要,因为它在神经网络中也常常作为激活函数存在。具体sigmoid函数的表达式为: 

\sigma (z)=\frac{1}{1+e^{-z} }

然后来说决策树,它具有树形结构,在它的内部节点上是分类的依据,而叶子节点则是分类的结果。其中关于分类的依据所选择的特征是依靠信息论中信息熵与信息增益来决定的,此外还可以根据基尼系数来决定,并且依据不同就得到不同的种类的决策树,如图1所示就是一棵决策树。通过图表可以知道决策树与神经网络相比,其有优秀的一点就是它具有很好的可解释性。 此外,南大教授周志华老师还对于决策树提出过深度森林的概念,这将在集成学习中详细说明。

接着来说关于支持向量机的,支持向量机可以用于分类也可以用于回归,对于总督SVM的概念为通过找到一个最优超平面来最大化不同类别之间的间隔,从而实现数据的分类。而它也还可以分为软间隔和硬间隔,所谓硬间隔 SVM 要求所有训练样本都严格满足分类条件:正类和支持向量之间的距离必须大于等于 1,负类和支持向量之间的距离也必须小于等于-1。这意味着所有的数据点都必须被正确分类,并且没有例外。而软间隔则是指允许某些样本位于间隔边界内甚至被错误分类,从而放宽了对所有数据点都必须被正确分类的要求。通过引入松弛变量 ξi 来衡量每个样本违反约束的程度,并将其加入到优化目标中以控制总误差。

在刚才说明的 SVM 中往往只能解决线性问题而对于非线性问题的解决需要用到核函数,并将朴素 SVM 构造成核 SVM(即KSVM),其中常见的核函数如下表所示:

1.2 无监督学习

无监督学习就是没有预定好的答案,就像试卷中的主观题那样,目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律,为进一步的数据分析提供基础。而具体关于无监督学习分为降维与回归,降维中通常是将多维的数据降为较少维的,比如从五维降维四维但同时要保证数据的信息不能缺失关键的。而关于降维算法通常又可以分为线性降维与非线性降维,常见的线性降维有PCA、LDA、FA、ICA。非线性降维有 KPCA、NMF、LLE、MDS 等。 然后来看聚类算法,聚类算法追求的就是类内差距最小化,类间差距最大化,而聚类后得到的叫做簇,如下图所示:

其中的红点就是质心,在计算时计算的距离就是某一点与之的距离。然后在聚类算法中最常见的是kmeans聚类,即k均值聚类算法,然后除此之外还有层次聚类、密度聚类等。其中,在参差聚类里还可以建立层次树来可视化提高对于模型的理解,层次树如下图所示:

 此外,关于聚类中距离的计算上,有这样几种距离度量方式,分别是闵可夫斯基距离、欧式距离、曼哈顿距离与切比雪夫距离,它们的不同是关于闵可夫斯基距离公式中p值的不同而不同,在此不多作解释。

1.3 半监督学习

半监督学习(Semi-Supervised Learning, SSL)作为一种机器学习范式,旨在结合少量标注数据和大量未标注数据以提高模型的性能。在许多实际应用场景中,获取高质量的标注数据既昂贵又耗时,而未标注数据则相对容易获得。因此,半监督学习提供了一种有效的方法,能够在减少对标注数据依赖的同时,充分利用丰富的未标注资源来增强模型的学习能力。通过这种方式,半监督学习不仅能够降低数据标注的成本,还能显著提升模型的泛化能力和准确性。

具体来说,半监督学习的核心思想是利用未标注数据中的潜在结构信息来指导模型的学习过程。它假设未标注数据与标注数据来自相同或相似的分布,并尝试从未标注数据中提取有助于分类或其他任务的信息。例如,在文本分类任务中,即使只有少数文档被人工标注了类别标签,大量的未标注文档仍然可以为模型提供有关词汇使用模式、主题分布等有价值的信息。这种信息对于构建更加鲁棒和精确的分类器至关重要。 半监督学习方法多种多样,主要包括自训练(Self-Training)、协同训练(Co-Training)、图基于方法(Graph-Based Methods)以及生成对抗网络(GANs)。

自训练方法首先使用标注数据训练一个初始模型,然后利用该模型对未标注数据进行预测,将置信度高的预测结果加入训练集,逐步改进模型。协同训练适用于多视图或多特征集的数据,通过两个或多个模型相互协作,共同扩展标注数据。图基于方法构建数据点之间的相似性图,根据图上的平滑假设传播标签信息。生成对抗网络则通过生成模型和判别模型的竞争机制,从未标注数据中学到更多有用的信息。

二、交叉验证

交叉验证的核心思想是将数据集划分为若干个互不重叠的子集,并轮流使用这些子集作为验证集,其余部分则用于训练模型。最常用的交叉验证方法是 K 折交叉验证(K-Fold Cross-Validation),其中数据集被随机分成 K 个大小相等的子集(称为“折”)。接下来,模型依次在 K−1 折上进行训练,在剩下的一折上进行验证,这一过程重复 K 次,每次选择不同的子集作为验证集。最终,模型的性能由 K 次验证结果的平均值来衡量。这种方法不仅充分利用了所有可用的数据,而且减少了单次分割可能带来的偶然性误差。

除了 K 折交叉验证外,还有其他变体如留一法(Leave-One-Out Cross-Validation, LOOCV)和分层 K 折交叉验证(Stratified K-Fold Cross-Validation)。留一法是一种极端情况下的交叉验证,其中每个样本轮流作为验证集,其余所有样本用于训练;这种方法适用于非常小的数据集。分层 K 折交叉验证则确保每个折叠中的类别分布与整个数据集的比例一致,特别适合于不平衡分类问题。

三、机器学习流程

3.1 数据预处理

在进行机器学习建模的刚才中,我们首先要进行数据预处理工作(假设我们已经通过一些方式得到了数据集,比如从 kaggle、Data Driver 等网站上或是手工收集等),在这个过程中,我们一般进行三个方面的工作,首先是异常值处理,通过绘图制表等方式查找出明显不同于正常数据的异常值的点,然后将之删除或是替换等。

然后是缺失值处理工作,对于数据集中的缺失值一般要进行填补或删除(即直接将缺失值所在行直接删除),在填补时一般考虑数据是否具有连续性,如果有则要考虑插值填补,即用样条插值、线性插值等方式进行填补,尤其是在时间序列数据上。而对于不具有连续性的数据集,则可以使用对应数据列中的众数、平局数进行填补,或是直接用上一行对应数值或下一行对应数值直接填补。接下来是第三个工作,就是数据集的划分,一般我们将数据集划分为两部分,分别是训练集和预测集,它们之间保持独立,并且是8:2的比例进行划分。不过在某些时候,我们还会再增加一个验证集,以更精确模型的预测能力。

3.2 模型拟合与预测

在处理好数据后就需要选择合适的模型,根据数据集特征以及任务目标等。选定好模型后,先将训练集数据提供给模型,让模型在此基础上开始训练,然后将测试集提供给模型,通过测试集来判断模型拟合情况与泛化能力。如果对于模型表现不错,那么可以考虑用此模型进行预测。

3.3 模型评估与维护

对于模型的评估上,也就是用测试集进行评估,一般采用精度、召回率、F1分数以及MSE等指标来判断。模型与软件类似,同样需要维护,即根据数据的变化不断调整参数等,使之能根据数据的变化而变化。

四、集成学习

关于集成学习,首先需要知道其基本概念,就是将单个模型,这里称为“弱学习器”通过一定的方法将之集成、结合为一个大的模型,这个大的模型称为“强学习器”或“集成模型”,其中典型的例子就是随机森林与梯度提升机。然后是对于它的分类,它依据集成的方法最基本的有两种类型,分别是:Boosting 与 Bagging 方法。先说 Bagging 方法,Bagging 通过从原始训练集中有放回地抽取样本(即 bootstrap 抽样),创建多个子数据集,并在每个子数据集上训练一个独立的学习器。最终预测时,对于分类任务采用多数投票法,对于回归任务则取平均值。所以通过随机森林具体理解,就是有放回地选择一些数据集,彼此独立训练出 n 棵决策树来,然后对于统一数据让这些决策树进行预测,对于预测的结果通过投票等方式来选择。

然后是 Boosting 方法。Boosting 是一种迭代的方法,它逐步构建一系列学习器,每个新的学习器都试图纠正前一个学习器的错误。具体来说,它会赋予那些被先前学习器错误分类的数据更高的权重,从而让后续学习器更加关注这些“难例”。其中最典型的就是 LightGBM 模型。 然后,来简单说一下深度森林的概念,深度森林也称为 gcForest(Gradient Boosting Forest),是由周志华教授及其团队提出的一种新型集成学习方法。它结合了传统机器学习中的随机森林和梯度提升树的思想,并借鉴了深度学习的多层结构,旨在提供一种不需要显式特征工程且性能优异的模型。与传统的神经网络不同,深度森林完全基于决策树构建,避免了对大量标注数据的需求和复杂的调参过程。

在上述的集成学习中,都是同类型的进行集成,不过也可以让不同类型的学习器也进行集成,其中,同类型的学习器集成的叫同质集成,不同的叫异质集成。比如,将全是决策树的弱学习器集成为随机森林。随机森林就是同质集成,而如果将几个决策树和一个 KNN 模型集成,就是异质集成。

五、懒惰学习与渴求学习

在机器学习中我们还将根据训练阶段与预测阶段所作事情的复杂度不同来分为懒惰学习与渴求学习。 所谓懒惰学习就是指在训练时几乎不建立什么复杂模型或压根不去计算,而在预测时再进行大量计算,其中 KNN 算法就是懒惰学习中最典型的例子。它的思想是让训练集分布在一个数轴上,当新的数据点到来时,其在数轴中,在某一距离范围内 k 个相邻点中,哪个类型的数据点最多,这个新的数据点的标签就会是该类型。如下给出的代码就是 KNN 的实现代码: 

def classify0(inx, dataSet, labels, k):dataSetSize = dataSet.shape[0]diffMat = tile(inx, (dataSetSize,1)) - dataSetsqDiffMat = diffMat**2sqDistances = sqDiffMat.sum(axis=1)distances = sqDistances**0.5sortedDistIndicies = distances.argsort()classCount = {}for i in range(k):voteIlabel = labels[sortedDistIndicies[i]]classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1sortedClassCounted = sorted(classCount.items(),key=operator.itemgetter(1),reverse=True,)return sortedClassCounted[0][0]

然后,渴求学习(即急切学习)则与懒惰学习相反它是指在构建模型时进行复杂计算,而在预测时只作极简单的工作,像决策树就是渴求学习。

六、强化学习

强化学习就是学习“做什么(即如何把当前的情境映射成动作)才能使得数值化的收益信号最大化”。学习者不会被告知应该采取什么动作,而是必须自己通过尝试去发现哪些动作会产生最丰厚的收益。在强化学习中,最重要的几个要素分别是 Agent、状态、策略、动作、环境、价值函数等。其中,Agent 是指一个能做出决策的主题,他能根据情况做出最好的决策,在某种程度上,它就像是经济学中的理性经济人。状态是指 Agent 在某个时间下的情况。动作是指根据状态而要采取的行为,比如在走格子游戏中,动作就可以是向上走或是向下走等。而策略就是采取怎样的动作。环境是指 Agent 所处在怎样的环境中。最后价值函数是指对于 Agent 做出某个动作后未来长期的一个收益。

在强化学习中,摇臂机问题是一个经典的问题,它是指在累积奖励中,通过摇臂(即不同策略与动作)去实现收益最大化。而在这个基础上,我们可以将之延申,变为有k个摇臂,即k-摇臂赌博机。那么此时就变成了面对k个不同奖励与收益,如何通过一个合适的策略实现收益最大化。 此外,还有三个最火热的话题在强化学习中,分别是动态规划(DP)、时序差分学习(TD)和蒙特卡罗方法(MC)。

在说明这三者之前,先来说明另外两个东西,即贝尔曼方程与自举。贝尔曼方程是描述在一个决策过程中,当前状态的价值可以通过立即获得的奖励和下一状态的预期价值来递归计算的一种数学方程。换言之,就是它(贝尔曼方程)提供了一种方式来将未来的奖励折现在现在,并且通过这种递归关系来评估不同状态或动作的好坏。其表达式如下: 

V\left(s\right)=E\left[R_{t+1}+\gamma\ V\left(S_{t+1}\right)\middle|\ S_t=s\right] ​​​​​

其中V(s)是状态s的价值,E表示期望,大写 R 下标 停顿 t 加 1 结束 下标在t+1时刻得到的奖励,γ是一个折扣因子,用以表示未来奖励的重要性。 然后是自举,所谓自举就是指使用当前估计值来评估其他估计值的方法。如果采用了自举的方法,那么就意味着我们不再需要遍历整个环境模型,而可以在随机地更新了一部分之后就依靠这些部分值取获得最后预估价值。

在动态规划中,是将整个大的环境模型分割成许多个小的取评估,但如果环境模型过大,则计算复杂度将十分吓人,所以可以采用异步的方式,即不遍历整个环境模型,而只经行其中一部分,并且依据其中的这一部分依旧能得到好多结果。 同样采取了自举思想的还有时序差分学习,即TD方法。TD 方法的核心思想是通过估计状态价值或状态-动作价值与实际观察到的奖励之间的差异(称为 TD 误差)来更新价值函数。其中最典型的几个算法分别是 TD(0)、Sarsa 算法和 Q-learning 算法。其中 TD(0)属于单步自举方法,可以理解为多自举方法中的一个特例,而所谓多部自举方法就是考虑多个时间步骤来更新价值函数的方法。TD 方法可以说是结合了 DP 与 MC 方法中的有点。

至于 MC 方法可以理解为:MC 方法是一种仅基于完整序列的经验回报来评估和更新状态或动作价值的方法,即等到一次尝试(从开始到结束)完成后,根据实际获得的总奖励来调整估计值。 在这里,就可以分为在线学习和离线学习这两种学习方式,所谓在线学习就是指模型在接收到数据后立即进行更新。而离线学习则是指模型基于预先收集的批量数据进行训练与更新。

七、深度学习

一类被称为神经网络的算法最近以“深度学习”的名字再度流行。虽然深度学习在许多机器学习应用中都有巨大的潜力,但深度学习算法往往经过精度调整,只适用于特定的使用场景。首先,我们要先知道神经网络的概念,所谓神经网络就是指参考人脑神经连接的方式构建许多的神经元然后以一定层数与权重连接。所以,在最简单的神经网络中,只有两层,即输入层和输出层,这称之为感知机如下图所示:

而之后则可以往这二者之间添加隐藏层,隐藏层的层数说明了神经网络的复杂度,同时含有多层的隐藏层的神经网络被称为多层感知机(MLP)。感知机 在经典的神经网络中,一般只有前项的神经元连接后一项的,同一层之间不会连接,并后项的神经元也不会向前项的神经元进行反馈,而如果建立这种反馈就诞生了循环神经网络(RNN)。此外,常见的神经网络还有GAN模型,卷积神经网络(CNN),竞争神经网络等,在此不多做解释。 

八、总结

在当今科技飞速发展的时代,人工智能(AI)已经成为推动社会进步和产业升级的重要力量。作为人工智能的核心技术之一,机器学习(Machine Learning, ML)扮演着不可或缺的角色。它不仅极大地提高了处理复杂问题的能力,还为各行各业带来了前所未有的创新机遇。 本总结涵盖了机器学习的基本概念、分类方法以及具体的实现流程,并详细探讨了监督学习、无监督学习、半监督学习、强化学习及深度学习等不同类型的机器学习范式。对于每个类型的学习方法,我们讨论了其适用场景、常用算法及其特点,包括但不限于回归与分类任务中的线性回归、决策树和支持向量机;降维与聚类分析中的PCA、K-means等;以及强化学习中的贝尔曼方程、TD学习、蒙特卡罗方法等。

此外,本文也解析了从数据收集到模型评估的完整机器学习项目流程,强调了数据预处理的重要性,如异常值和缺失值的处理,以及数据集的合理划分。模型选择方面,介绍了集成学习的概念,通过组合多个弱学习器形成强学习器来提高预测能力,同时提及了交叉验证和网格搜索等优化参数的方法。 特别地,文章提到了周志华教授提出的深度森林(gcForest),这是一种基于决策树构建的新型集成学习方法,旨在提供一种无需显式特征工程且性能优异的模型,适用于标注数据有限的情况。

综上所述,本总结全面回顾了机器学习领域的关键知识点和技术细节,为读者提供了理解这一领域所需的基础知识框架。随着研究的不断深入和技术的发展,机器学习将继续扩展其应用边界,解决更加复杂的问题,成为连接理论与实践的重要桥梁。

此上

相关文章:

关于机器学习的一份总结

在之前的文章中分别有详细的关于机器学习中某一学习算法的介绍,但缺少一个总体关于机器学习的总结,所以在这篇文中就是关于机器学习的一份总结。 在最近的日子中,人工智能日益火热起来,而机器学习是其中举足轻重的一部分&#xf…...

推荐一个开源的轻量级任务调度器!TaskScheduler!

大家好,我是麦鸽。 这次推荐一款轻量级的嵌入式任务调度器,目前已经有1.4K的star,这个项目比较轻量化,只有5个源文件,可以作为学习的一个开源项目。 核心文件 项目概述: 这是一个轻量级的协作式多任务处理&…...

【18】Word:明华中学-儿童医保❗

目录 题目​ NO2 NO3 NO4 NO5 NO6 NO7 NO8 NO9 题目 NO2 布局→页面设置对话框→纸张方向:横向→纸张大小:A3 ;页面设置对话框:直接输入纸张大小的宽度和高度即可→页面设置对话框:上下左右边距→版式&…...

如何用selenium来链接并打开比特浏览器进行自动化操作(1)

前言 本文是该专栏的第76篇,后面会持续分享python爬虫干货知识,记得关注。 本文,笔者将基于“比特浏览器”,通过selenium来实现链接并打开比特浏览器,进行相关的“自动化”操作。 值得一提的是,在本专栏之前,笔者有详细介绍过“使用selenium或者pyppeteer(puppeteer)…...

基于springboot+thymeleaf+Redis仿知乎网站问答项目源码

项目介绍 基于springbootthymeleafRedis仿知乎网站问答项目源码,可以作为毕业设计项目参考学习 按照需要一定动手能力 发文章,发视频,发想法,提问回答,注册登录 开发环境 使用技术:springbootthymeleafRe…...

读spring官方文档的一些关键知识点介绍

目录 bean definitionBeanPostProcessorBeanFactoryPostProcessorComponent and Further Stereotype AnnotationsAOP Concepts bean definition https://docs.spring.io/spring-framework/docs/5.1.3.RELEASE/spring-framework-reference/core.html#beans-child-bean-definiti…...

2024年AI与大数据技术趋势洞察:跨领域创新与社会变革

目录 引言 技术洞察 1. 大模型技术的创新与开源推动 2. AI Agent 智能体平台技术 3. 多模态技术的兴起:跨领域应用的新风口 4. 强化学习与推荐系统:智能化决策的底层驱动 5. 开源工具与平台的快速发展:赋能技术创新 6. 技术安全与伦理:AI技术的双刃剑 7. 跨领域技…...

ThinkPhp项目解决静态资源请求的跨域问题的解决思路

背景&#xff1a;我在前端使用vue语言开发的&#xff0c;请求的后端是用ThinkPhp项目开发的。我vue项目里的请求php接口&#xff0c;自带header参数的跨域问题通过网上查询到的server端配置方法已经解决了。我使用的 是中间件的配置方法&#xff1a; <?php//admin 项目 配…...

mybatis的多对一、一对多的用法

目录 1、使用VO聚合对象&#xff08;可以解决这两种情况&#xff09; 多对一&#xff1a; 一对多&#xff1a; 2、非聚合的多对一做法&#xff1a; 3、非聚合的一对多做法&#xff1a; 1、使用VO聚合对象&#xff08;可以解决这两种情况&#xff09; 当我需要多对一、一对…...

消息队列实战指南:三大MQ 与 Kafka 适用场景全解析

前言&#xff1a;在当今数字化时代&#xff0c;分布式系统和大数据处理变得愈发普遍&#xff0c;消息队列作为其中的关键组件&#xff0c;承担着系统解耦、异步通信、流量削峰等重要职责。ActiveMQ、RabbitMQ、RocketMQ 和 Kafka 作为市场上极具代表性的消息队列产品&#xff0…...

前端发送Ajax请求的技术Axios

目录 1.引入Axios文件 2.使用Axios发送请求 2.1请求方法的别名 请求的URL地址怎么来的&#xff1f; 后端实现 前后端交互 1.引入Axios文件 <script src"https://unpkg.com/axios/dist/axios.min.js"></script> 2.使用Axios发送请求 2.1请求方法的…...

第17章:Python TDD回顾与总结货币类开发

写在前面 这本书是我们老板推荐过的&#xff0c;我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后&#xff0c;我突然思考&#xff0c;对于测试开发工程师来说&#xff0c;什么才更有价值呢&#xff1f;如何让 AI 工具更好地辅助自己写代码&#xff0c;或许…...

opencv_KDTree_搜索介绍及示例

cv::flann::KDTreeIndexParams 说明&#xff0c;使用&#xff1f; cv::flann::KDTreeIndexParams 是 OpenCV 中用于配置 KD 树&#xff08;K-Dimensional Tree&#xff09;索引参数的类。KD 树是一种用于多维空间中的点搜索的数据结构&#xff0c;常用于最近邻搜索等问题。在…...

Windows 上安装 MongoDB 的 zip 包

博主介绍&#xff1a; 大家好&#xff0c;我是想成为Super的Yuperman&#xff0c;互联网宇宙厂经验&#xff0c;17年医疗健康行业的码拉松奔跑者&#xff0c;曾担任技术专家、架构师、研发总监负责和主导多个应用架构。 近期专注&#xff1a; RPA应用研究&#xff0c;主流厂商产…...

先进制造aps专题二十七 西门子opcenter aps架构分析

欧美的商业aps&#xff0c;主要就是sap apo,西门子opcenter aps,达索quintiq 从技术的层面&#xff0c;西门子aps是不如sap apo的&#xff0c;但是西门子aps是西门子数字化工厂产品的核心&#xff0c;有很多特色&#xff0c;所以分析 西门子aps主要分计划器和排产器两个部分 计…...

【数据分享】1929-2024年全球站点的逐年平均气温数据(Shp\Excel\无需转发)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、湿度等指标&#xff0c;其中又以气温指标最为常用&#xff01;说到气温数据&#xff0c;最详细的气温数据是具体到气象监测站点的气温数据&#xff01;本次我们为大家带来的就是具体到气象监…...

机器学习——什么是代价函数?

1.代价函数的定义 首先,提到代价函数是估计值和实际值的差,这应该是指预测值和真实值之间的差异,用来衡量模型的好坏。 在一元线性模型中,模型是直线,有两个参数,可能是斜率和截距。 通过调整这两个参数,让代价函数最小,这应该是说我们要找到最佳的斜率和截距,使得预测…...

docker 部署 MantisBT

1. docker 安装MantisBT docker pull vimagick/mantisbt:latest 2.先运行实例&#xff0c;复制配置文件 docker run -p 8084:80 --name mantisbt -d vimagick/mantisbt:latest 3. 复制所需要配置文件到本地路径 docker cp mantisbt:/var/www/html/config/config_inc.php.…...

02内存结构篇(D1_自动内存管理)

目录 一、内存管理 1. C/C程序员 2. Java程序员 二、运行时数据区 1. 程序计数器 2. Java虚拟机栈 3. 本地方法栈 4. Java堆 5. 方法区 运行时常量池 三、Hotspot运行时数据区 四、分配JVM内存空间 分配堆的大小 分配方法区的大小 分配线程空间的大小 一、内存管…...

Centos 8 交换空间管理

新增swap 要增加 Linux 系统的交换空间&#xff0c;可以按照以下步骤操作&#xff1a; 1. 创建一个交换文件 首先&#xff0c;选择文件路径和大小&#xff08;例如&#xff0c;增加 1 GB 交换空间&#xff09;。 sudo fallocate -l 1G /swapfile如果 fallocate 不可用&…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中&#xff0c;可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中&#xff0c;必须做到&#xff1a; &#x1f50d; 追踪每一条 SQL 的生命周期&#xff08;从入口到数据库执行&#xff09;&#…...

Windows 下端口占用排查与释放全攻略

Windows 下端口占用排查与释放全攻略​ 在开发和运维过程中&#xff0c;经常会遇到端口被占用的问题&#xff08;如 8080、3306 等常用端口&#xff09;。本文将详细介绍如何通过命令行和图形化界面快速定位并释放被占用的端口&#xff0c;帮助你高效解决此类问题。​ 一、准…...