python机器学习(五)逻辑回归、决策边界、代价函数、梯度下降法实现线性和非线性逻辑回归

线性回归所解决的问题是把数据集的特征传入到模型中,预测一个值使得误差最小,预测值无限接近于真实值。比如把房子的其他特征传入到模型中,预测出房价, 房价是一系列连续的数值,线性回归解决的是有监督的学习。有很多场景预测出来的结果不一定是连续的,我们要解决的问题并不是一直类似于房价的问题。

分类问题

预测是红细胞还是白细胞,红细胞和白细胞是两个完全不同的类别。预测的时候首先要有历史数据,训练出模型,然后对模型进行反复的评估后得到理想的模型,然后把新的数据传入到模型中,进行一系列的预测,得到是红细胞(0),或者白细胞(1),这是最简单的二分类的问题。
在这里插入图片描述
如果用线性回归解决分类问题, y = 0 y=0 y=0为红细胞, y = 1 y=1 y=1为白细胞,数据集的呈现情况如下图所示,此时需要找到一条线,把二者分开,用线性回归去做的话,一要考虑代价函数最小(误差最小),二要将数据最好的分开。要将红白细胞分开的话,在线上取一个值(0.5),若 h ( x ) > = 0.5 h(x)>=0.5 h(x)>=0.5的话,得到的点在上方,预测的结果为1;如果 h ( x ) < 0.5 h(x)<0.5 h(x)<0.5的话,得到的点在下方,预测的结果为0。
在这里插入图片描述
如果数据中多了一个样本点,如下图所示,拟合线的求解应该是代价函数最小,拟合线会出现往右侧拓展的情况,为图中蓝色的线,如果 h ( x ) = 0.5 h(x)=0.5 h(x)=0.5的话,会出现在A区域的点不是完全为1的。也就是说当数据中出现了一个异常的样本点的时候,用线性回归模型解决问题的时候,就会让我们整体的预测都发生变化,这时就要引入逻辑回归算法。
在这里插入图片描述

逻辑回归

逻辑回归算法是当今最流行以及使用最广泛的算法之一。虽然它的名字中含有回归二字,但实际上是用来解决分类问题的。常用的场景:数据挖掘;疾病自动诊断;经济预测领域,还有垃圾邮件分类等。逻辑回归在深度学习中也是比较重要的,它是个比较经典的算法,它的很多原理被用在深度学习、神经网络中。

逻辑回归的实现

预测函数: h ( x ) = θ T X h(x)=θ^TX h(x)=θTX,预测值会远远大于1,或远远小于0,就无法做分类,目标:将 h ( x ) h(x) h(x)进行收敛到0和1之间, 0 < = h ( x ) 0 < = 1 0<=h(x)0<=1 0<=h(x)0<=1
实现:使用 s i g m o i d ( L o g i s t i c ) sigmoid(Logistic) sigmoid(Logistic)函数, g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z}} g(z)=1+ez1。当 z z z趋向于 + ∞ +∞ + e − z e^{-z} ez趋向于0, g ( z ) g(z) g(z)就无限趋向于1;当 z z z趋向于 − ∞ -∞ e − z e^{-z} ez趋向于 + ∞ +∞ + g ( z ) g(z) g(z)就无限趋向于0。
在这里插入图片描述

h ( x ) h(x) h(x)代入到 g ( z ) g(z) g(z)中去,得到 g ( θ T X ) = 1 1 + e − θ T X g(θ^TX)=\frac{1}{1+e^{-θ^TX}} g(θTX)=1+eθTX1,可以将 g ( θ T X ) g(θ^TX) g(θTX)映射到0和1之间。
在这里插入图片描述
θ T X > = 0 θ^TX>=0 θTX>=0的时候, g ( θ T X ) > = 0.5 g(θ^TX)>=0.5 g(θTX)>=0.5,趋近于1;
θ T X < 0 θ^TX<0 θTX<0的时候, g ( θ T X ) < 0.5 g(θ^TX)<0.5 g(θTX)<0.5,趋近于0。公式还可以写为 h ( x ) = 1 1 + e − θ T X h(x)=\frac{1}{1+e^{-θ^TX}} h(x)=1+eθTX1
将一组数据训练出来模型,将新的数据代入到模型中,得到预测的结果,结果不可能刚好是0或者1,也可能在0和1之间,若得到的结果 h ( x ) = 0.7 h(x)=0.7 h(x)=0.7,可以预测有70%的几率为白细胞(1),为红细胞(0)的概率为30%。为其中一种的概率: h ( x ) = P ( y = 1 ∣ x ; θ ) h(x)=P(y=1|x;θ) h(x)=P(y=1∣x;θ),在 y = 1 y=1 y=1的条件下 x x x的概率;两者之间的概率和: P ( y = 1 ∣ x ; θ ) + P ( y = 0 ∣ x ; θ ) = 1 P(y=1|x;θ)+P(y=0|x;θ)=1 P(y=1∣x;θ)+P(y=0∣x;θ)=1

  • 总结
    h ( x ) h(x) h(x)使用 g ( θ T X ) g(θ^TX) g(θTX)收敛到0和1之间。
    h ( x ) = g ( θ T X ) = P ( y = 1 ∣ x ; θ ) h(x)=g(θ^TX)=P(y=1|x;θ) h(x)=g(θTX)=P(y=1∣x;θ) g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z}} g(z)=1+ez1
    θ T X > 0 , h ( x ) > = 0.5 θ^TX>0,h(x)>=0.5 θTX>0,h(x)>=0.5,则预测 y = 1 y=1 y=1
    θ T X < 0 , h ( x ) < 0.5 θ^TX<0,h(x)<0.5 θTX<0,h(x)<0.5,则预测 y = 0 y=0 y=0

决策边界

帮助我们更好的理解逻辑回归,理解函数表达的内涵, x 1 x_1 x1 x 2 x_2 x2分布代表特征,得到 h ( x ) = g ( θ 0 + θ 1 x 1 + θ 2 x 2 ) h(x)=g(θ_0+θ_1x_1+θ_2x_2) h(x)=g(θ0+θ1x1+θ2x2),后半部分相当于 θ T X θ^TX θTX
如下图所示,假设 θ 0 = − 3 , θ 1 = 1 , θ 2 = 1 θ_0=-3,θ_1=1,θ_2=1 θ0=3θ1=1θ2=1,得到 θ T X = − 3 + x 1 + x 2 θ^TX=-3+x_1+x_2 θTX=3+x1+x2,如果 − 3 + x 1 + x 2 > = 0 -3+x_1+x_2>=0 3+x1+x2>=0,意味着 h ( x ) > = 0.5 h(x)>=0.5 h(x)>=0.5,值更加接近于1,则 y = 1 y=1 y=1划分为1的可能性比较大;如果 − 3 + x 1 + x 2 < 0 -3+x_1+x_2<0 3+x1+x2<0,意味着 h ( x ) < 0.5 h(x)<0.5 h(x)<0.5,值更加接近于0,则 y = 0 y=0 y=0划分为0的可能性比较大。根据表达式画线,将 − 3 -3 3移到等号的右边,当 x 1 = 0 x_1=0 x1=0时, x 2 = 3 x_2=3 x2=3;当 x 2 = 0 x_2=0 x2=0时, x 1 = 3 x_1=3 x1=3,两点之间画线,在线上方是 x 1 + x 2 > = 3 x_1+x_2>=3 x1+x2>=3的部分,类别预测为1,同理可得,在线下方,类别预测为0。
在这里插入图片描述

在下图中,用叉号表示正样本,用圈表示负样本,此时不能用一条直线将二者进行划分了,在之前线性回归的时候,如果数据不能用一条直线拟合,用多项式回归,添加一些高阶的式子。在逻辑回归的时候,也可以使用相同的方法。
h ( x ) = g ( θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 1 2 + θ 4 x 2 2 ) h(x)=g(θ_0+θ_1x_1+θ_2x_2+θ_3x_1^2+θ_4x_2^2) h(x)=g(θ0+θ1x1+θ2x2+θ3x12+θ4x22),其中 θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 1 2 + θ 4 x 2 2 θ_0+θ_1x_1+θ_2x_2+θ_3x_1^2+θ_4x_2^2 θ0+θ1x1+θ2x2+θ3x12+θ4x22相当于 θ T X θ^TX θTX
如下图所示,假设 θ 0 = − 1 , θ 1 = 0 , θ 2 = 0 , θ 3 = 1 , θ 4 = 1 θ_0=-1,θ_1=0,θ_2=0,θ_3=1,θ_4=1 θ0=1θ1=0θ2=0θ3=1θ4=1,代入公式后得到 θ T X = − 1 + x 1 2 + x 2 2 θ^TX=-1+x_1^2+x_2^2 θTX=1+x12+x22,若 − 1 + x 1 2 + x 2 2 > = 0 -1+x_1^2+x_2^2>=0 1+x12+x22>=0,则可以得到 θ T X = x 1 2 + x 2 2 > = 1 θ^TX=x_1^2+x_2^2>=1 θTX=x12+x22>=1 h ( x ) h(x) h(x)的值大于0.5,类别划分为1,否则类别划分为0。 x 1 2 + x 2 2 = 1 x_1^2+x_2^2=1 x12+x22=1是以原点为圆心,半径为1的标准圆,也即是决策边界,在圆外部的点是要大于半径的,属于类别为1的,反之在圆内部的点是小于半径的,属于类别为0的。决策边界是通过 θ θ θ来确定的, h ( x ) = 1 1 + e − θ T X h(x)=\frac{1}{1+e^{-θ^TX}} h(x)=1+eθTX1,1和e都是常数,X为数据样本集(特征),只有 θ θ θ是个参数,只要确定了 θ θ θ也就确定了决策边界 h ( x ) h(x) h(x),也就可以预测边界 h ( x ) h(x) h(x)的值。
在这里插入图片描述
求解 θ θ θ值,跟线性回归有类似之处,求 θ θ θ是基于代价函数的,使得代价函数最小,求得 θ θ θ值。

代价函数

凸函数只有1个全局最优解,非凸函数求最优解的时候,很有可能陷入到局部最优解中,而不是全局最小值。非凸函数无法通过梯度下降法取得全局最小值。
在这里插入图片描述
线性回归所定义的代价函数为: J ( θ ) = 1 2 m ∑ i = 1 m ( h ( x i ) − y i ) 2 J(θ)= \frac{1}{2m}\displaystyle{\sum_{i=1}^{m}(h(x^i)-y^i)^2} J(θ)=2m1i=1m(h(xi)yi)2,真实值减去预测值的平方求和,然后除以特征的个数,也就是均方误差,此时 h ( x i ) = θ 0 + θ 1 x i h(x^i)=θ_0+θ_1x^i h(xi)=θ0+θ1xi,如果把代价函数运用到逻辑回归当中,此时 h ( x i ) h(x^i) h(xi)不再是简单的线性回归关系,而是 h ( x ) = 1 1 + e − θ T X h(x)=\frac{1}{1+e^{-θ^TX}} h(x)=1+eθTX1,把等号后面的内容整体代入到代价函数中去,图形就会变成非凸函数,不便于求全局最小值。
目标:找到一个不同的代价函数,能使得 J ( θ ) J(θ) J(θ)变为凸函数。
实现:使用对数去掉指数化带来的影响,转化为线性关系,用对数把指数对冲掉。 2 n = 4 2^n=4 2n=4,可以转换为 l o g 2 4 = n log_24=n log24=n,求得 n = 2 n=2 n=2
解决方法:转为凸函数,如果为一元,直接求二阶导,若大于等于零,则为凸函数;如果为多元的,借助hessian矩阵来解决,涉及到正定性。
作用:凸函数的局部最优解就是全局最优解。

  • y = 1 y=1 y=1时,代价函数 C o s t ( h ( x ) , y ) = − l o g e ( h ( x ) ) Cost(h(x),y)=-log_e(h(x)) Cost(h(x),y)=loge(h(x))
    C o s t Cost Cost为当前样本预测的损失。P为概率, y = 1 y=1 y=1的概率。
    y = 1 y=1 y=1时, h ( x ) h(x) h(x)要接近于1才能使得代价函数最小, y y y为真实值,类别为1, h ( x ) = P ( y = 1 ∣ x ; θ ) h(x)=P(y=1|x;θ) h(x)=P(y=1∣x;θ)为预测值为1的概率,概率越大就意味着越接近于结果 y = 1 y=1 y=1。如果 h ( x ) = 1 h(x)=1 h(x)=1是最好的效果, C o s t = − l o g e ( h ( x ) ) = 0 Cost=-log_e(h(x))=0 Cost=loge(h(x))=0,意味着损失最小,代价函数为0;
    如果 h ( x ) = 0 h(x)=0 h(x)=0 h ( x ) = P ( y = 1 ∣ x ; θ ) h(x)=P(y=1|x;θ) h(x)=P(y=1∣x;θ)为预测值为1的概率为0, C o s t ( h ( x ) , y ) = − l o g e ( h ( x ) ) Cost(h(x),y)=-log_e(h(x)) Cost(h(x),y)=loge(h(x))为无穷大,损失值非常大。
    在这里插入图片描述
  • y = 0 y=0 y=0时,代价函数 C o s t ( h ( x ) , y ) = − l o g e ( 1 − h ( x ) ) Cost(h(x),y)=-log_e(1-h(x)) Cost(h(x),y)=loge(1h(x))
    y = 0 y=0 y=0时, h ( x ) h(x) h(x)为1, C o s t ( h ( x ) , y ) = − l o g e ( 1 − h ( x ) ) Cost(h(x),y)=-log_e(1-h(x)) Cost(h(x),y)=loge(1h(x))预测值为1的概率为0, l o g ( 1 − h ( x ) ) log(1-h(x)) log(1h(x))为无穷大;反之 h ( x ) h(x) h(x)为0,趋向于 y = 0 y=0 y=0的类别, − l o g e 1 = 0 -log_e1=0 loge1=0,损失最小。
    在这里插入图片描述
    注意:对于逻辑回归来说,不需要区分预测概率类别。当 h ( x ) = P > = 0.5 h(x)=P>=0.5 h(x)=P>=0.5,划分为1这个类别,趋近于1;当 h ( x ) = P < 0.5 h(x)=P<0.5 h(x)=P<0.5,划分到0这个类别,趋近于0。
    以上两个代价函数是个分段的,求解 θ θ θ值时要解决实际的问题,而 y = 0 或 1 y=0或1 y=01,可以简化方程式来求代价函数,把以上两个式子整合成一个,方便后期的求导。 C o s t ( h ( x ) , y ) = − y l o g e ( h ( x ) ) − ( 1 − y ) l o g e ( 1 − h ( x ) ) Cost(h(x),y)=-ylog_e(h(x))-(1-y)log_e(1-h(x)) Cost(h(x),y)=yloge(h(x))(1y)loge(1h(x))
    在这里插入图片描述
    C o s t ( h ( x ) , y ) Cost(h(x),y) Cost(h(x),y)为一个样本数据的损失,每个样本点都有损失,要将很多个样本点进行整合,进行求和除以样本的个数,将负号提出来,得到以下的式子,这种方式也为交叉熵。
    J ( θ ) = 1 m ∑ i = 1 m C o s t ( h ( x ) , y ) = − 1 m ∑ i = 1 m [ y l o g e ( h ( x ) ) + ( 1 − y ) l o g e ( 1 − h ( x ) ) ] J(θ)= \frac{1}{m}\displaystyle{\sum_{i=1}^{m}Cost(h(x),y)}=-\frac{1}{m}\displaystyle{\sum_{i=1}^{m}[ylog_e(h(x))+(1-y)log_e(1-h(x))]} J(θ)=m1i=1mCost(h(x),y)=m1i=1m[yloge(h(x))+(1y)loge(1h(x))]
    逻辑回归是很常用的算法,也用于深度学习中。这个方程式运用了统计学中的极大自然法,为不同的模型快速找出参数,同时也是个凸函数,解决了之前非凸函数的问题,便于接下来的求导。

梯度下降法推导

代价函数:
J ( θ ) = = − 1 m ∑ i = 1 m [ y l o g e ( h ( x ) ) + ( 1 − y ) l o g e ( 1 − h ( x ) ) ] J(θ)= =-\frac{1}{m}\displaystyle{\sum_{i=1}^{m}[ylog_e(h(x))+(1-y)log_e(1-h(x))]} J(θ)==m1i=1m[yloge(h(x))+(1y)loge(1h(x))]
目标:求 θ θ θ,使得代价函数 J ( θ ) J(θ) J(θ)最小。
换元法, z = θ T X z=θ^TX z=θTX,对 g ( z ) g(z) g(z)的求导就变为了对 1 1 + e − z \frac{1}{1+e^{-z}} 1+ez1进行求导, 1 + e − z 1+e^{-z} 1+ez求导,就变为了 e − z e^{-z} ez导数乘以 − z -z z的导数,对 z = θ T X z=θ^TX z=θTX求导,X为常数, θ T θ^T θT为变量,求导后为 x x x

在这里插入图片描述
在这里插入图片描述
代价函数求导之后的结果为:
在这里插入图片描述
梯度下降法的本质是通过不停的求导,迭代曲线下降的方向,是凸优化的问题,通过求导决定曲线下降的速度和方向,最快的达到最低点,损失最小的过程
l o g e x = l n x = 1 x log_ex=lnx=\frac{1}{x} logex=lnx=x1

梯度下降法实现线性逻辑回归

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

sklearn实现线性逻辑回归

逻辑回归API

sklearn.linear_model.LogisticRegression(solver='liblinear',penalty='l2',C=1.0,
solver 可选参数:{'liblinear','sag','saga','newton-cg','lbfgs'}
penalty:正则化的种类
C:正则化力度

liblinear为默认值,是优化问题的算法,适用于小数据集;sag,saga用于大型数据集,newton-cg用于多类的问题。
数据中有正例和反例,sklearn接口默认将数量少的作为正例。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

梯度下降法实现非线性逻辑回归

分类评估报告API

sklearn.metrics.classification_report(y_true,y_pred,labels=[],target_names=None)
y_true:真实目标值
y_pred:估计器预测目标值
labels:指定类别对应的数字
target_names:目标类别名称
return:每个类别精确率与召回率

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

使用sklearn提供的数据集

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

【微服务】springboot整合mongodb使用详解

目录 一、mongodb简介 1.1 什么是mongodb 1.2 mongodb特点 二、mongodb中的核心术语 2.1 mogodb与数据库对比 2.2 mongodb中的核心概念 2.3 与关系数据库的差异 2.3.1 半结构化 2.3.2 支持多级嵌套 2.3.3 关系弱化 三、mongodb 技术优势和应用场景 3.1 mongodb 技术…

【C#】并行编程实战:并行编程中的模式

本章将介绍并行编程模式&#xff0c;重点是理解并行代码问题场景并使用并行编程/异步技术解决他们。本章会介绍几种最重要的编程模式。 本教程学习工程&#xff1a;魔术师Dix / HandsOnParallelProgramming GitCode 1、MapReduce 模式 引入 MapReduce 是为了解决处理大数据的问…

睡眠健康数据分析

项目背景 背景描述 本数据集涵盖了与睡眠和日常习惯有关的诸多变量。如性别、年龄、职业、睡眠时间、睡眠质量、身体活动水平、压力水平、BMI类别、血压、心率、每日步数、以及是否有睡眠障碍等细节。 数据集的主要特征&#xff1a; 综合睡眠指标&#xff1a; 探索睡眠持续时…

UNISOT让食品欺诈无处遁形

​​发表时间&#xff1a;2023年5月11日 全世界的消费者开始越来越关注食物的来源和采购方式。这是因为人们渴望吃得更健康、更用心&#xff0c;同时人们也认识到了购买可持续且合乎伦理道德的产品的必要性。 近年来&#xff0c;人们对食品溯源的渴望进一步加速&#xff0c;原…

Python读取csv、Excel文件生成图表

简介 本文章介绍了通过读取 csv 或 Excel 文件内容&#xff0c;将其转换为折线图或柱状图的方法&#xff0c;并写入 html 文件中。 目录 1. 读取CSV文件 1.1. 生成折线图 1.1.1. 简单生成图表 1.1.2. 设置折线图格式 1.2. 生成柱状图 1.2.1. 简单生成图表 1.2.2. 设置柱…

文章详情页 - 评论功能的实现

目录 1. 准备工作 1.1 创建评论表 1.2 创建评论实体类 1.3 创建 mapper 层评论接口和对应的 xml 实现 1.4 准备评论的 service 层 1.5 准备评论的 controller 层 2. 总的初始化详情页 2.1 加载评论列表 2.1.1 实现前端代码 2.1.2 实现后端代码 2.2 查询当前登录用户的…

Docker安装es以及ik分词器

1、拉取镜像 docker pull elasticsearch:7.10.12、下载对应版本的ik分词、并将它们解压到ik文件夹下&#xff0c;如图 https://github.com/medcl/elasticsearch-analysis-ik/releases 3、在服务器上创建文件夹 mkdir /usr/elklog/elk/es mkdir /usr/elklog/elk/es/data mkdi…

【C进阶】回调函数(指针进阶2,详解,小白必看)

目录 6. 函数指针数组 6.1简单计算器 6.2函数指针数组实现计算器 7. 指向函数指针数组的指针(仅作了解即可) 8.回调函数 8.1关于回调函数的理解​编辑 8.1.1用回调函数改良简单计算器 8.2qsort库函数的使用 8.2.1冒泡排序 8.2.2qsort的概念 8.3冒泡排序思想实现qsor…

docker存储空间报错解决(谨慎操作,会影响原来的容易镜像,不熟练切勿操作)

报错内容 [rootDream package]# docker build -t imapp . [] Building 21.0s (6/19)> [internal] load build definition from Dockerfile 0.1s> > transferring …

TCP 三次握手四次挥手浅析

大家都知道传输层中的TCP协议是面向连接的&#xff0c;提供可靠的连接服务&#xff0c;其中最出名的就是三次握手和四次挥手。 一、三次握手 三次握手的交互过程如下 喜欢钻牛角尖的我在学习三次握手的时候就想到了几个问题&#xff1a;为什么三次握手是三次&#xff1f;不是…

AnimateDiff论文解读-基于Stable Diffusion文生图模型生成动画

文章目录 1. 摘要2. 引言3. 算法3.1 Preliminaries3.2. Personalized Animation3.3 Motion Modeling Module 4. 实验5.限制6. 结论 论文&#xff1a; 《AnimateDiff: Animate Your Personalized Text-to-Image Diffusion Models without Specific Tuning》 github: https://g…

销售易和管易云接口打通对接实战

销售易和管易云接口打通对接实战 来源系统:销售易 销售易CRM支持企业从营销、销售到服务的全流程自动化业务场景&#xff0c;创新性地利用AI、大数据、物联网等新型互联网技术打造双中台型CRM&#xff1b;既能帮助B2B企业连接外部经销商、服务商、产品以及最终用户&#xff0c;…

支持多种通信方式和协议方便接入第三方服务器或云平台

2路RS485串口是一种常用的通信接口&#xff0c;可以支持Modbus Slave协议&#xff0c;并可接入SCADA、HMI、DSC、PLC等上位机。它还支持Modbus RTU Master协议&#xff0c;可用于扩展多达48个Modbus Slave设备&#xff0c;如Modbus RTU远程数据采集模块、电表、水表、柴油发电机…

【Rust学习 | 基础系列3 | Hello, Rust】编写并运行第一个Rust程序

文章目录 前言一&#xff0c;创建项目二&#xff0c;两种编译方式1. 使用rustc编译器编译2. 使用Cargo编译 总结 前言 在开始学习任何一门新的编程语言时&#xff0c;都会从编写一个简单的 “Hello, World!” 程序开始。在这一章节中&#xff0c;将会介绍如何在Rust中编写并运…

强推!大语言模型『百宝书』,一文缕清所有大模型!

夕小瑶科技说 原创 作者 | 王思若 最近&#xff0c;大型语言模型无疑是AI社区关注的焦点&#xff0c;各大科技公司和研究机构发布的大模型如同过江之鲫&#xff0c;层出不穷又眼花缭乱。 让笔者恍惚间似乎又回到了2020年国内大模型“军备竞赛”的元年&#xff0c;不过那时候…

DSA之图(4):图的应用

文章目录 0 图的应用1 生成树1.1 无向图的生成树1.2 最小生成树1.2.1 构造最小生成树1.2.2 Prim算法构造最小生成树1.2.3 Kruskal算法构造最小生成树1.2.4 两种算法的比较 1.3 最短路径1.3.1 两点间最短路径1.3.2 某源点到其他各点最短路径1.3.3 Dijkstra1.3.4 Floyd 1.4 拓扑排…

【前端知识】React 基础巩固(三十六)——RTK中的异步操作

React 基础巩固(三十六)——RTK中的异步操作 一、RTK中使用异步操作 引入RTK中的createAsyncThunk&#xff0c;在extraReducers中监听执行状态 import { createSlice, createAsyncThunk } from "reduxjs/toolkit"; import axios from "axios";export cons…

第七篇:k8s集群使用helm3安装Prometheus Operator

安装Prometheus Operator 目前网上主要有两种安装方式&#xff0c;分别为&#xff1a;1. 使用kubectl基于manifest进行安装 2. 基于helm3进行安装。第一种方式比较繁琐&#xff0c;需要手动配置yaml文件&#xff0c;特别是需要配置pvc相关内容时&#xff0c;涉及到的yaml文件太…

程序员做项目必用的工具【更新中...】

每个程序员多多少少都会有自己简化项目的小工具&#xff0c;我采访了我们公司所有的工程师总结了程序员必备工具篇。 一.unisms 官网&#xff1a;https://unisms.apistd.com/ 不会有人这年头写注册登录还是自己写验证码模块吧&#xff1f; 你该得拥有一个短信验证码平台了&…

【GUI】基于开关李雅普诺夫函数的非线性系统稳定(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…