关于机器学习的一份总结

news2025/1/19 22:03:20

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

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

一、机器学习的分类

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

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)) - dataSet
    sqDiffMat = diffMat**2
    sqDistances = sqDiffMat.sum(axis=1)
    distances = sqDistances**0.5
    sortedDistIndicies = distances.argsort()
    classCount = {}
    for i in range(k):
        voteIlabel = labels[sortedDistIndicies[i]]
        classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1
    sortedClassCounted = 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),这是一种基于决策树构建的新型集成学习方法,旨在提供一种无需显式特征工程且性能优异的模型,适用于标注数据有限的情况。

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

此上

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

idea中远程调试中配置的参数说明

Ⅰ 远程调试中配置的端口号与服务本身端口号区别 一、远程调试中配置端口号的作用 在 IDEA 中进行远程调试时配置的端口号主要用于建立开发工具(如 IDEA)和远程服务之间的调试连接。当你启动远程调试时,IDEA 会监听这个配置的端口号&#xf…

初识JVM HotSopt 的发展历程

目录 导学 目前企业对程序员的基本要求 面向的对象 实战 学习目标 JVM 是什么 JVM 的三大核心功能 各大 JVM look 看一下虚拟机 HotSopt 的发展历程 总结 导学 目前企业对程序员的基本要求 面向的对象 实战 学习目标 JVM 是什么 JVM 的三大核心功能 即时编译 主要是…

3. 后端验证前端Token

书接上回,后端将token返回给前端,前端存入cookie,每次前端给后端发送请求,后端是如何验证的。 若依是用过滤器来实现对请求的验证,过滤器的简单理解是每次发送请求的时候先发送给过滤器执行逻辑判断以及处理&#xff0…

系统思考—系统性抛弃过去成功的经验

“成功的经验就是最好的老师。” 这句话常听,但在快速变化的市场中,过去的成功可能正是你眼前困境的根源。曾经有效的方法,今天或许已经不适用。要突破瓶颈,企业必须做出艰难的选择——放下过去的成功模式,拥抱未来的…

【MySQL】简单解析一条SQL更新语句的执行过程

1. 更新语句执行流程概述 在 MySQL 中,一条更新语句(如 update T set cc1 where ID2)的执行涉及多个关键步骤,与查询语句类似,会经过连接器、分析器、优化器、执行器等 Server 层模块,最终到达存储引擎&…

C#与AI的共同发展

C#与人工智能(AI)的共同发展反映了编程语言随着技术进步而演变,以适应新的挑战和需要。自2000年微软推出C#以来,这门语言经历了多次迭代,不仅成为了.NET平台的主要编程语言之一,还逐渐成为构建各种类型应用程序的强大工具。随着时…

mono3d汇总

lidar坐标系 lidar坐标系可以简单归纳为标准lidar坐标系和nucense lidar坐标系&#xff0c;参考链接。这个坐标系和车辆的ego坐标系是一致的。 标准lidar坐标系 opendet3d&#xff0c;mmdetection3d和kitt都i使用了该坐标系 up z^ x front| /| /left y <------ 0kitti采…

支持向量机算法(三):非线性支持向量原理层层拆解,精读公式每一处细节

支持向量机算法&#xff08;一&#xff09;&#xff1a;像讲故事一样讲明白它的原理及实现奥秘-CSDN博客 支持向量机算法&#xff08;二&#xff09;&#xff1a;层层拆解&#xff0c;精读公式每一处细节-CSDN博客 支持向量机算法&#xff08;一&#xff09;、算法&#xff0…

LLM - 大模型 ScallingLaws 的迁移学习与混合训练(PLM) 教程(3)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/145212097 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 Scalin…

数据可视化:让数据讲故事的艺术

目录 1 前言2 数据可视化的基本概念2.1 可视化的核心目标2.2 传统可视化手段 3 数据可视化在知识图谱中的应用3.1 知识图谱的可视化需求3.2 知识图谱的可视化方法 4 数据可视化叙事&#xff1a;让数据讲故事4.1 叙事可视化的关键要素4.2 数据可视化叙事的实现方法 5 数据可视化…

数据库开发支持服务

文章目录 前言适用产品服务范围前提条件责任矩阵交互项目 服务流程交付件项目完成标志 前言 数据库开发支持服务是为了达成客户业务系统开发、测试、上线运行提供的具体技术支撑&#xff0c;内容包括数据库开发指导、性能调优、第三方平台对接支持、应用对接与上线支持等。数据…

2024年,我的技术探索与成长之路

2024年&#xff0c;我的技术探索与成长之路 2024年已经过去&#xff0c;作为一名技术爱好者和写作者&#xff0c;我回顾了过去一年在博客上记录的点滴&#xff0c;感慨良多。这一年&#xff0c;我不仅见证了技术的飞速发展&#xff0c;也在不断学习和实践中找到了自己的成长方向…

机器学习经典无监督算法——聚类K-Means算法

目录 算法原理 算法步骤 算法API 算法导入 API参数理解 算法实现 算法原理 Kmeans 算法是一种无监督的聚类算法&#xff0c;目的是将数据集中的样本划分到 K 个不同的簇中。 聚类&#xff1a;将数据集中相似的数据点归为一组或一个簇的过程。 数据集&#xff1a;一组相…

【MySQL索引:B+树与页的深度解析】

文章目录 MySQL索引&#xff1a;B树与页的深度解析1. 索引使用的数据结构——B树1.1 B树介绍1.2 B树的特点1.3 B树和B树的对比 2. MySQL中的页2.1 页的介绍2.2 页主体2.3 页目录2.4 B树在MySQL索引中的应用 MySQL索引&#xff1a;B树与页的深度解析 在MySQL数据库中&#xff0…

新阿里云买服务器配置需手动配置80端口

新买阿里云服务器需手动配置80&#xff0c;端口才可以访问nginx CentOS系统 安装nginx 1. 安装 Nginx yum install nginx 2. 启动 Nginx 服务 systemctl start nginx 3. 修改默认网页 cd /usr/share/nginx/ echo "666" >index.html cat index.html 访问ngin最后…

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

“上次课讲了机器学习的模型表示,讲了一个线性模型的例子,那怎样在可能的拟合直线里选择一条最合适的呢?有没有数学的方法让这个直线合适还是不合适变得可以量化呢?这就要说代价函数了。” 本次课前半段内容非常简单,带领我们一起复习初中平面几何的知识,后半段给出了代价…

LeetCode - #187 Swift 实现重复的DNA序列

网罗开发 &#xff08;小红书、快手、视频号同名&#xff09; 大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等…

ReactiveReactor Core

Reactive&Reactor Core 一、概述1、问题2、优势3、发展 二、Reactive Streams1、依赖2、API 三、Project Reactor1、概述2、并发模型3、入门1、依赖2、Flux和Mono3、空流&错误流 4、订阅响应式流1、常见订阅2、自定义订阅 5、API1、index2、timestamp3、any4、map5、fi…

STL容器-- list的模拟实现(附源码)

STL容器-- list的模拟实现&#xff08;附源码&#xff09; List的实现主要考察我们对list这一容器的理解&#xff0c;和代码的编写能力&#xff0c;通过上节对list容器的使用&#xff0c;我们对list容器已经有了一些基本的了解&#xff0c;接下来就让我们来实现一些list容器常见…

【转】厚植根基,同启新程!一文回顾 2024 OpenHarmony 社区年度工作会议精彩瞬间

在数字化浪潮奔腾不息的今天&#xff0c;开源技术已成为推动科技创新与产业发展的强大引擎。2025年1月10日-11日&#xff0c;OpenAtom OpenHarmony&#xff08;开放原子开源鸿蒙&#xff0c;以下简称“OpenHarmony”或“开源鸿蒙”&#xff09;社区2024年度工作会议于深圳盛大启…