✨机器学习笔记(四)—— 逻辑回归、决策边界、过拟合、正则化

Course1-Week3:
https://github.com/kaieye/2022-Machine-Learning-Specialization/tree/main/Supervised%20Machine%20Learning%20Regression%20and%20Classification/week3

机器学习笔记(四)

  • 1️⃣逻辑回归(logistic regression)
    • 🎗️代价函数
    • 🎗️梯度下降
  • 2️⃣决策边界(decision boundary)
  • 3️⃣过拟合(overfit)
  • 4️⃣正则化(regularization)
    • 🎗️线性回归的正则方法
    • 🎗️逻辑回归的正则方法

1️⃣逻辑回归(logistic regression)

🎈分类问题作为有监督学习的一种,在它能根据输入的特征 x \bm{x} x (特征向量),来从有限的分类中预测出属于哪个分类,例如:将电子邮件识别为垃圾邮件还是非垃圾邮件或确定肿瘤为恶性还是良性等这些问题,这两个问题都只有两种结果,可以是二分类问题,如果有多种结果则为多分类问题。
在这里插入图片描述

🎈如下是根据肿瘤的大小去进行肿瘤类型的分类(1表示为恶性,0表示为良性),对于这种情景可以看出,用线性回归去拟合图像不是个很好的选择。
在这里插入图片描述

😞类似这种情况使用线性回归来拟合看上去是有点糟糕,拟合的很不合适,而且对于分类问题,它受数据的影响太大了,导致它拟合的效果会更差。

在这里插入图片描述

😃而逻辑回归就排上用场了,它是通过构造出一个 s i g m o i d sigmoid sigmoid 函数,来形成这样的曲线,可以很好的拟合分类问题。
s i g m o i d : g ( z ) = 1 1 + e − z , 0 < g ( z ) < 1 sigmoid: g(z)=\frac 1 {1+e^{-z}}, 0<g(z)<1 sigmoid:g(z)=1+ez1,0<g(z)<1
在这里插入图片描述

✨逻辑回归模型的构造过程:通过 s i g m o i d sigmoid sigmoid 函数将线性转为非线性,将值域映射到了 0~1 之间,用于分类问题。本质就是找一个更拟合数据情况的函数去套用(线性回归就是这么找出来的)。
f w ⃗ , b ( x ⃗ ) = g ( z ) = g ( w ⃗ ⋅ x ⃗ + b ) = 1 1 + e − ( w ⃗ ⋅ x ⃗ + b ) f_{\vec w,b}(\vec x)=g(z)=g({\vec w} \cdot {\vec x+b})= \frac 1 {1+e^{-(\vec w \cdot \vec x+b)}} fw ,b(x )=g(z)=g(w x +b)=1+e(w x +b)1

在这里插入图片描述

对于逻辑回归输出可以把它视做概率, f w ⃗ , b ( x ⃗ ) = 0.7 f_{\vec w,b}(\vec x)=0.7 fw ,b(x )=0.7 时可以认为对于特征 x \bm x x 预测出的肿瘤为恶性的可能为70%,逻辑回归的输出值越大,肿瘤为恶性的可能性就越大。

在这里插入图片描述

对于一组分类数据,可以看出逻辑回归的拟合效果是不错的。
在这里插入图片描述


🎗️代价函数

🎈代价函数的定义, L L L 为损失函数(Loss function):

J ( w , b ) = 1 m ∑ i = 1 m L ( f w ⃗ , b ( x ⃗ ( i ) ) , y ( i ) ) J(w,b)=\frac 1 {m} \sum_{i=1}^{m}L(f_{\vec w,b}(\vec x^{(i)}),y^{(i)}) J(w,b)=m1i=1mL(fw ,b(x (i)),y(i))

在线性回归中我们使用了平方误差成本作为损失函数,其代价函数 J ( w ⃗ , b ) J(\vec w,b) J(w ,b) 图像为一个下凸的形状,可以通过梯度下降收敛到一个非常好的参数。

在这里插入图片描述

🎈squared error cost function:

J ( w , b ) = 1 2 m ∑ i = 0 m − 1 ( f w , b ( x ( i ) ) − y ( i ) ) 2 J(w,b)=\frac 1 {2m} \sum_{i=0}^{m-1}(f_{ w,b}(x^{(i)})-y^{(i)})^2 J(w,b)=2m1i=0m1(fw,b(x(i))y(i))2

在线性回归中: f w , b ( x ( i ) ) = w x ( i ) + b 在线性回归中:f_{ w,b}(x^{(i)})=wx^{(i)}+b 在线性回归中:fw,b(x(i))=wx(i)+b

而对于逻辑回归来说直接使用平方误差代价函数,会导致 J ( w ⃗ , b ) J(\vec w,b) J(w ,b) 有多个局部最小值,使用梯度下降很难找到一个好的参数。

在这里插入图片描述

在这里插入图片描述

✨首先直接给出逻辑回归的代价函数定义,再分析:

J ( w ⃗ , b ) = 1 m ∑ i = 1 m L ( f w ⃗ , b ( x ⃗ ( i ) ) , y ( i ) ) = { − l o g ( f w ⃗ , b ( x ⃗ ( i ) ) ) if  y ( i ) = 1 − l o g ( 1 − f w ⃗ , b ( x ⃗ ( i ) ) ) if  y ( i ) = 0 J(\vec w,b)=\frac 1 m \sum_{i=1}^mL(f_{\vec w,b}(\vec x^{(i)}),y^{(i)})= \begin{cases}-log(f_{\vec w,b}(\vec x^{(i)})) & \text{if } y^{(i)} = 1 \\ -log(1-f_{\vec w,b}(\vec x^{(i)})) & \text{if } y^{(i)} = 0 \end{cases} J(w ,b)=m1i=1mL(fw ,b(x (i)),y(i))={log(fw ,b(x (i)))log(1fw ,b(x (i)))if y(i)=1if y(i)=0

在逻辑回归中: f w , b ( x ( i ) ) = 1 1 + e − ( w ⃗ ⋅ x ⃗ + b ) 在逻辑回归中:f_{ w,b}(x^{(i)})= \frac 1 {1+e^{-(\vec w \cdot \vec x+b)}} 在逻辑回归中:fw,b(x(i))=1+e(w x +b)1

🎈先从损失函数 L ( y ^ ( i ) , y ( i ) ) L(\hat y^{(i)},y^{(i)}) L(y^(i),y(i)) 入手,由于逻辑回归其函数在平方误差损失函数中不凸,我们将其映射到一个凸的 l o g log log 函数中,有以下定义和图像性质:

这种函数可以很好的达到我们想要的效果,当 y ( i ) = 1 y^{(i)}=1 y(i)=1 时,逻辑回归函数的值越接近 1 时,有着越接近于 0 的代价;而逻辑回归函数的值越接近于 0 时,有着接近 ∞ \infty 的代价,例如将一个恶性肿瘤预测为良性,其代价是巨大的,这样的代价还能很好的去惩罚模型,让机器不要出现这种预测。

在这里插入图片描述

y ( i ) = 0 y^{(i)}=0 y(i)=0 时,该损失函数亦然达到我们想要的效果。

在这里插入图片描述

在这里插入图片描述

我们可以看出这种函数是行得通的,所以对于逻辑回归问题的代价函数为:

在这里插入图片描述

✨其图像非常适合梯度下降,它没有平台、局部最小值或不连续性。

在这里插入图片描述

🤓我们其实还可以进一步简化逻辑回归的成本函数,因为 y y y 并不能取 0 或 1 外的任何值,可以先简写它的损失函数:

L ( f w ⃗ , b ( x ⃗ ( i ) ) , y ( i ) ) = − y ( i ) l o g ( f w ⃗ , b ( x ⃗ ( i ) ) ) − ( 1 − y ( i ) ) l o g ( 1 − f w ⃗ . b ( x ⃗ ( i ) ) ) L(f_{\vec w,b}(\vec x^{(i)}),y^{(i)})=-y^{(i)}log(f_{\vec w,b}(\vec x^{(i)}))-(1-y^{(i)})log(1-f_{\vec w.b}(\vec x^{(i)})) L(fw ,b(x (i)),y(i))=y(i)log(fw ,b(x (i)))(1y(i))log(1fw .b(x (i)))

看起来是个很复杂的形式,但是当只能考虑 y ( i ) y^{(i)} y(i) 等于 0 或 1 的情况下时,该方程就变会了原来的两段式。

✨简化后的代价函数为:

J ( w ⃗ , b ) = 1 m ∑ i = 1 m [ L ( f w ⃗ , b ( x ⃗ ( i ) ) , y ( i ) ) ] = − 1 m ∑ i = 1 m [ y ( i ) l o g ( f w ⃗ , b ( x ⃗ ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − f w ⃗ . b ( x ⃗ ( i ) ) ) ] \begin{align*} J(\vec w,b)&=\frac 1 m \sum_{i=1}^{m}[L(f_{\vec w,b}(\vec x^{(i)}),y^{(i)})] \\ &=-\frac 1 m \sum_{i=1}^{m}[y^{(i)}log(f_{\vec w,b}(\vec x^{(i)}))+(1-y^{(i)})log(1-f_{\vec w.b}(\vec x^{(i)}))] \end{align*} J(w ,b)=m1i=1m[L(fw ,b(x (i)),y(i))]=m1i=1m[y(i)log(fw ,b(x (i)))+(1y(i))log(1fw .b(x (i)))]


🎗️梯度下降

前面学过了梯度下降法的公式,而逻辑回归的梯度下降同理,只是其成本函数 J J J 有所不同了,将其代入即可。

在这里插入图片描述
🧐可以看到求出来的偏导数和线性回归求出来的长相一样,但是其实函数 f f f 的定义已经改变了,在线性回归中, f w , b ( x ( i ) ) = w x ( i ) + b f_{ w,b}(x^{(i)})=wx^{(i)}+b fw,b(x(i))=wx(i)+b,而在逻辑回归中 f w , b ( x ( i ) ) = 1 1 + e − ( w ⃗ ⋅ x ⃗ + b ) f_{ w,b}(x^{(i)})= \frac 1 {1+e^{-(\vec w \cdot \vec x+b)}} fw,b(x(i))=1+e(w x +b)1,两者并不是一个东西,请注意这一点。

🌹再来直观感受一下逻辑回归的梯度下降过程:

在这里插入图片描述

代码上可以通过 sklearn.linear_model.LogisticRegression 导入逻辑回归模型去拟合数据。

from sklearn.linear_model import LogisticRegressionlr_model = LogisticRegression()
lr_model.fit(X, y)

2️⃣决策边界(decision boundary)

🎈由于逻辑回归模型 f w ⃗ , b ( x ⃗ ) f_{\vec w,b}(\vec x) fw ,b(x ) 输出的是 ( 0 , 1 ) (0,1) (0,1) 连续的值,而预测值 y ^ \hat y y^ 为 0 或 1,由可以结合对模型输出概率上的理解,去定义一个阈值,当 f w ⃗ , b ( x ⃗ ) ≥ 阈值, y ^ = 1 f_{\vec w,b}(\vec x) \geq 阈值,\hat y=1 fw ,b(x )阈值,y^=1;当 f w ⃗ , b ( x ⃗ ) < 阈值, y ^ = 0 f_{\vec w,b}(\vec x) < 阈值,\hat y=0 fw ,b(x )<阈值,y^=0。 若设定阈值为 0.5 0.5 0.5,当 f w ⃗ , b ( x ⃗ ) ≥ 0.5 f_{\vec w,b}(\vec x) \ge 0.5 fw ,b(x )0.5 时,即 w ⃗ ⋅ x ⃗ + b ≥ 0 \vec w \cdot \vec x+b \ge 0 w x +b0,有 y ^ = 1 \hat y=1 y^=1;当 f w ⃗ , b ( x ⃗ ) < 0.5 f_{\vec w,b}(\vec x) < 0.5 fw ,b(x )<0.5 时,即 w ⃗ ⋅ x ⃗ + b < 0 \vec w \cdot \vec x+b<0 w x +b<0 时,有 y ^ = 0 \hat y=0 y^=0

在这里插入图片描述
此定义又让我们专注于 w ⃗ ⋅ x ⃗ + b \vec w \cdot \vec x+b w x +b 上来, 而此时 w ⃗ ⋅ x ⃗ + b = 0 \vec w \cdot \vec x+b=0 w x +b=0 即为决策边界

🎈linear decision boundary:

在这里插入图片描述

🎈Non-linear decision boundaries:

在这里插入图片描述

3️⃣过拟合(overfit)

🎈对于回归问题,如下有三图,🌹可以看到左图用一个线性函数去拟合数据,但是表现的并不怎么好,因为对于数据集来说,明显可以看出 s i z e size size 越大, p r i c e price price 增加的速度越慢,图像应该越平缓,所以左图这种情况被称为欠拟合(underfit)高偏差(high bias);🌹中间的函数图像很好的拟合了数据集,而且具有通用性,因为我们可以想到对于一个新数据它应该也能做出一个合适的预测,即具有泛化性(generalization);🌹而在右图中,该曲线完美的经过了每个数据集,甚至损失为 0,但它只是为了数据集而生的,脱离了数据集毫无作用,可以看到图中对于一个相对较大的 s i z e size size 居然给出了更小的 p r i c e price price ,所以它不具有通用性,不能对新数据进行预测(这将毫无意义),这种情况则成为过拟合(overfit)高方差(high variance)

在这里插入图片描述

🎈在分类问题中,同样会有这种问题。

在这里插入图片描述


✨为了避免过拟合这种情况,有以下的解决方法:

① 添加足够多的数据,让图像具有泛化性。

在这里插入图片描述

② 特征选择,过拟合的一个原因就是特征选择的太多,导致函数成为一个复杂的多项式,我们可以进行特征的选择,只选择其中与 y y y 值最相关的特征,可以有效地解决一些过拟合问题。

在这里插入图片描述

③ 正则化(Regularization)

正则化是通过减小参数 w j w_j wj 来减轻特征对函数值的影响来防止过拟合,相较于 ② 它并不直接消除特征,还是采取更温和的方式去调整。

在这里插入图片描述

4️⃣正则化(regularization)

🎈正则化是机器学习中的一种技术,主要用于减少模型的复杂度,防止过拟合,提高模型的泛化能力,还可以通过正则化来惩罚模型的参数,使得模型变得更简单。正则化就是说给代价函数加上一些限制(正则化项),通过这种限制去规范他们再接下来的循环迭代中,不要自我膨胀。

先改写一下代价函数,给它加上后面两项 1000 w 3 2 1000w_3^2 1000w32 1000 w 4 2 1000w_4^2 1000w42 ,这时如果想要最小化代价函数,由于后面两项过大的影响,需要让 w 3 w_3 w3 w 4 w_4 w4 非常小,这样又变相惩罚的函数 f f f 的参数 w 3 , w 4 w_3,w_4 w3,w4 ,使得高次数的项影响变小,这样变相让函数缓解了过拟合问题。

在这里插入图片描述

🧐顺着这个思路,假设我们不知道各个特征的影响程度,就想让机器自己去惩罚对应的特征项系数 w j w_j wj 去解决过拟合问题,这就是正则化。我们给代价函数加入一个正则化项,里面有所有的 w j w_j wj,由于为了最小化代价,机器会惩罚所有的 w j w_j wj

✨正则化项为: λ 2 m ∑ j = 1 m w j 2 , λ 为正则化参数 \frac \lambda {2m} \sum_{j=1}^m w_j^2 \,, \, \lambda 为正则化参数 2mλj=1mwj2,λ为正则化参数

在这里插入图片描述

🤓对于正则化参数 λ \lambda λ,它的选择可以是为了实现损失函数和保持小的 w j w_j wj 这两者的平衡。一个过小的正则化参数 λ \lambda λ 会让正则化参数形同虚设,没法解决过拟合问题;而一个过大的正则化参数 λ \lambda λ 会让 w j w_j wj 被惩罚的过于小,导致欠拟合,所以需要选择一个好的 λ \lambda λ 避免出现这两种情况。

在这里插入图片描述

🎗️线性回归的正则方法

线性回归使用了正则化的代价函数和梯度下降如下:

在这里插入图片描述

如图,当学习率 α = 0.01 \alpha=0.01 α=0.01 ,正则化参数 λ = 1 \lambda=1 λ=1,而样本数量 m = 50 m=50 m=50 时可以看到我们将 w j w_j wj 缩小为了 0.9998 w j 0.9998w_j 0.9998wj,这就是正则化的惩罚作用,比起正则化之前直接在 w j w_j wj 上的梯度下降来说,我们的惩罚使得 w j w_j wj 变得更小。

在这里插入图片描述

def compute_cost_linear_reg(X, y, w, b, lambda_ = 1):"""Computes the cost over all examplesArgs:X (ndarray (m,n): Data, m examples with n featuresy (ndarray (m,)): target valuesw (ndarray (n,)): model parameters  b (scalar)      : model parameterlambda_ (scalar): Controls amount of regularizationReturns:total_cost (scalar):  cost """m  = X.shape[0]n  = len(w)cost = 0.for i in range(m):f_wb_i = np.dot(X[i], w) + b                                   #(n,)(n,)=scalar, see np.dotcost = cost + (f_wb_i - y[i])**2                               #scalar             cost = cost / (2 * m)                                              #scalar  reg_cost = 0for j in range(n):reg_cost += (w[j]**2)                                          #scalarreg_cost = (lambda_/(2*m)) * reg_cost                              #scalartotal_cost = cost + reg_cost                                       #scalarreturn total_cost         

🎗️逻辑回归的正则方法

在逻辑回归中,我们也可以使用正则化方法:

在这里插入图片描述

def compute_cost_logistic_reg(X, y, w, b, lambda_ = 1):"""Computes the cost over all examplesArgs:Args:X (ndarray (m,n): Data, m examples with n featuresy (ndarray (m,)): target valuesw (ndarray (n,)): model parameters  b (scalar)      : model parameterlambda_ (scalar): Controls amount of regularizationReturns:total_cost (scalar):  cost """m,n  = X.shapecost = 0.for i in range(m):z_i = np.dot(X[i], w) + b                                      #(n,)(n,)=scalar, see np.dotf_wb_i = sigmoid(z_i)                                          #scalarcost +=  -y[i]*np.log(f_wb_i) - (1-y[i])*np.log(1-f_wb_i)      #scalarcost = cost/m                                                      #scalarreg_cost = 0for j in range(n):reg_cost += (w[j]**2)                                          #scalarreg_cost = (lambda_/(2*m)) * reg_cost                              #scalartotal_cost = cost + reg_cost                                       #scalarreturn total_cost                                                  #scalar

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

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

相关文章

Java的衍生生态有哪些?恐怖如斯的JAVA

Java的衍生生态极其丰富&#xff0c;涵盖了多个层面和领域。以下是Java衍生生态的一些主要方面&#xff1a; 1. 开源工具 开发工具&#xff1a;如Eclipse&#xff0c;这是一款非常优秀的Java IDE工具&#xff0c;支持Java以及其他语言的代码编写。Spring官方还基于Eclipse开发…

Excel单元格操作:读写单元格数据、格式设置与条件格式详解

目录 一、Excel单元格的基本操作 1.1 单元格的选取与编辑 案例一&#xff1a;基本数据录入 1.2 单元格的读取与写入 案例二&#xff1a;使用公式计算销售额 二、单元格格式设置 2.1 字体与颜色设置 案例三&#xff1a;设置标题格式 2.2 数字格式设置 案例四&#xff…

树形弹窗选择框/vue2/Element/弹框选择

前言 此类选择器根据vueelementUI实现&#xff0c;使用vue3的可以根据此案例稍作改动即可实现&#xff0c;主要功能有弹出选择、搜索过滤、搜索结果高亮等&#xff0c;此选择器只支持单选&#xff0c;如需多选可在此基础进行改造。 效果图 代码实现 使用时&#xff0c;props-…

【C++ Primer Plus习题】15.1

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream> #include "tv.h" us…

openstack之cinder介绍

概念 cinder 为虚拟机提供管理块存储服务。支持的文件系统&#xff1a;lvm、iscsi、nfs、san、RBD 组件构成及功能介绍 cinder api&#xff1a;在控制节点运行&#xff0c;管理服务的接口&#xff0c;被命令行、其他组件调用&#xff1b; cinder scheduler&#xff1a;类似n…

VMware Fusion Pro 13 Mac版虚拟机 安装Win11系统教程

Mac分享吧 文章目录 Win11安装完成&#xff0c;软件打开效果一、VMware安装Windows11虚拟机1️⃣&#xff1a;准备镜像2️⃣&#xff1a;创建虚拟机3️⃣&#xff1a;虚拟机设置4️⃣&#xff1a;安装虚拟机5️⃣&#xff1a;解决连不上网问题 安装完成&#xff01;&#xff0…

怎么使用ai 免费生成ppt?这4个工具可以帮忙

随之AI工具的流行&#xff0c;网络上也涌现了一批 AIPPT 工具&#xff0c;可以在办公上帮助我们节省很多制作PPT的时间。通常它们的操作也比较简单&#xff0c;所以适合很多人使用。为了可以帮助大家提高办公效率&#xff0c;我在这里跟大家分享4款可以免费使用的AIPPT制作工具…

文件误删危机应对:数据恢复全解析

文件误删&#xff1a;数字化时代的隐形挑战 在数字化的浪潮中&#xff0c;文件已成为我们工作、学习和生活中不可或缺的一部分。它们记录着我们的思想、成果与回忆&#xff0c;是连接现实与虚拟世界的桥梁。然而&#xff0c;这份便捷与高效背后&#xff0c;却隐藏着文件误删这…

OpenCV结构分析与形状描述符(14)拟合直线函数fitLine()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 拟合一条直线到2D或3D点集。 fitLine 函数通过最小化 ∑ i ρ ( r i ) \sum_i \rho(r_i) ∑i​ρ(ri​)来拟合一条直线到2D或3D点集&#xff0c…

crossover激活码免费 crossover24破解版免费下载安装教程

CrossOver 可以在 Mac 上运行成千上万的 Windows 程序。从办公软件、实用工具、游戏到设计软件&#xff0c;您只需在 Mac 的 dock 轻按一下便可运行。您可以 Windows 程序和 Mac 程序之间随意切换&#xff0c;而这一切无需重启、无需虚拟机&#xff0c;也无需购买 Windows 授权…

音视频入门基础:AAC专题(1)——AAC官方文档下载

一、AAC简介 高级音频编码&#xff08;英语&#xff1a;Advanced Audio Coding&#xff0c;AAC&#xff09;是有损音频压缩的专利数字音频编码标准&#xff0c;由Fraunhofer IIS、杜比实验室、贝尔实验室、Sony、Nokia等公司共同开发。出现于1997年&#xff0c;为一种基于MPEG…

GNSS CTS GNSS Start and Location Flow of Android15

目录 1. 本文概述2.CTS 测试3.Gnss Flow3.1 Gnss Start Flow3.2 Gnss Location Output Flow 1. 本文概述 本来是为了做Android 14 Gnss CTS 的相关环境的搭建和测试&#xff0c;然后在测试中遇到了一些问题&#xff0c;去寻找CTS源码(/cts/tests/tests/location/src/android/l…

Leetcode 最长连续序列

算法流程&#xff1a; 哈希集合去重&#xff1a; 通过将数组中的所有元素放入 unordered_set&#xff0c;自动去除重复元素。集合的查找操作是 O(1)&#xff0c;这为后续的快速查找提供了保证。 遍历数组&#xff1a; 遍历数组中的每一个元素。对于每个元素&#xff0c;首先检…

大数据新视界 --大数据大厂之Kafka消息队列实战:实现高吞吐量数据传输

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

Ansys HFSS的边界条件与激励端口

本文将介绍HFSS边界条件、激励端口,然后重点介绍连接器信号完整性仿真应用最多的波端口(wave port)及其尺寸设置要点。 HFSS (电磁仿真)边界条件 HFSS中所谓的边界并非真正意义上的边界,边界条件是指定问题区域和对象边缘的场行为接口。在HFSS的背景下,边界的存在主要有两个…

[Linux入门]---使用exec函数实现简易shell

文章目录 1.简易实现2.人机交互&#xff0c;获取命令行3.命令行分割4.执行命令5.内建命令6.myshell代码 1.简易实现 2.人机交互&#xff0c;获取命令行 代码如下&#xff1a; int quit0; #define LEFT "[" #define RIGHT "]" #define LABLE "#&quo…

布偶猫应该喂什么猫罐头:交响乐金罐、希喂、尾巴生活测评

布偶猫&#xff0c;萌宠界的甜心代表&#xff0c;爱撒娇又黏人。想让它健康成长&#xff1f;喂养是关键。选粮不当&#xff0c;健康受损。今日精选三款热门主食罐&#xff0c;依据布偶猫营养需求&#xff0c;直接评测&#xff0c;助你快速了解何为理想之选。无需繁琐&#xff0…

Geneformer中文教程(2).huggingface transformers

Geneformer基于hugging face的transformers实现&#xff0c;具体模型是BertForSequenceClassification&#xff0c;本篇先熟悉该模型。 首先直观看Geneformer的模型架构&#xff0c;基于BERT构建一个文本分类模型&#xff0c;我们直接从预训练的Geneformer加载BERT&#xff0c…

为什么mac打不开rar文件 苹果电脑打不开rar压缩文件怎么办

你是否遇到过这样的情况&#xff0c;下载了一个rar文件&#xff0c;想要查看里面的内容&#xff0c;却发现Mac电脑无法打开。rar文件是一种常见的压缩文件格式&#xff0c;它可以将多个文件或文件夹压缩成一个文件&#xff0c;节省空间和传输时间。如此高效实用的压缩文档&…

自动驾驶:LQR、ILQR和DDP原理、公式推导以及代码演示(七、CILQR约束条件下的ILQR求解)

&#xff08;七&#xff09;CILQR约束条件下的ILQR求解 CILQR&#xff08;(Constrained Iterative Linear Quadratic Regulator)&#xff09; 是为了在 iLQR 基础上扩展处理控制输入和状态约束的问题。在这种情况下&#xff0c;系统不仅要优化控制输入以最小化代价函数&#x…