【机器学习】回归模型(线性回归+逻辑回归)原理详解

news2024/11/22 22:34:58

线性回归 Linear Regression

1 概述

线性回归类似高中的线性规划题目。线性回归要做的是就是找到一个数学公式能相对较完美地把所有自变量组合(加减乘除)起来,得到的结果和目标接近。

线性回归分为一元线性回归和多元线性回归。

2 一元线性回归

2.1 构造回归方程

有n组数据,自变量(特征值) x ( x 1 , x 2 , . . . , x n ) x(x_1,x_2,...,x_n) x(x1,x2,...,xn) 与因变量(目标值) y ( y 1 , y 2 , . . . , y n ) y(y_1,y_2,...,y_n) y(y1,y2,...,yn) ,我们需要找到一个线性关系,使他们之间尽可能满足: f ( x ) = a x + b f(x) =ax+b f(x)=ax+b ,这个就是构建的一元线性方程。

在这里插入图片描述

线性回归的目标就是让 f ( X ) f(X) f(X) y y y 之间的差距最小,也就是权重 a a a和偏置 b b b取什么值的时候 f ( X ) f(X) f(X) y y y最接近。

2.2 构造损失函数

损失函数是来度量模型预测值与真实值不一样的程度的,或者说度量预测错误的程度,损失函数值越小,模型就越好。

在回归问题中,误差平方和是回归任务中最常用的性能度量。这里就可以令损失函数 L ( a , b ) L(a,b) L(a,b)等于误差平方和(均方误差)。

则损失函数为:
L ( a , b ) = ∑ i = 1 n ( f ( x i ) − y i ) 2 L(a, b) = \sum \limits_{i = 1}^{n}(f(x_i) - y_i)^2 L(a,b)=i=1n(f(xi)yi)2

2.3 确定参数

我们需要通过最小的损失函数得到最佳的参数 a a a b b b 。一般使用最小二乘法
a = ∑ i = 1 n x i y i − n x ‾ y ‾ ∑ i = 1 n x i 2 − n x ‾ 2 b = y ‾ − a x ‾ a = \frac{\sum \limits_{i=1}^{n}x_iy_i - n \overline x \overline y}{\sum \limits_{i=1}^{n}x_i^2 - n \overline x ^ 2} \\ b = \overline y - a \overline x a=i=1nxi2nx2i=1nxiyinxyb=yax

3 多元线性回归

多元线性回归类似一元

回归方程: y = a 1 x 1 + a 2 x 2 + a 3 x 3 + . . . + a n x n + b y = a_1 x_1 + a_2 x_2 + a_3 x_3 + ... + a_n x_n + b y=a1x1+a2x2+a3x3+...+anxn+b

对所有的数据统一用矩阵形式表示:
y ( i ) = θ T x ( i ) + ε ( i )   ( 1 ) y^{(i)} = \theta ^ T x ^ {(i)} + \varepsilon^{(i)} \ (1) y(i)=θTx(i)+ε(i) (1)

y ( i ) y^{(i)} y(i)表示第i个样本的真实值

ε \varepsilon ε 误差代表真实值和预测值之间的差异

误差 ε ( i ) \varepsilon ^{(i)} ε(i) 是独立并具有相同的分布,服从均值为 0 方差为 θ 2 \theta ^ 2 θ2 的高斯分布

损失函数
L ( a 1 , a 2 , . . . , a n , b ) = ∑ i = 1 n ( f ( x i ) − y i ) 2 L(a_1, a_2, ..., a_n, b) = \sum_{i = 1}^{n}(f(x_i) - y_i)^2 L(a1,a2,...,an,b)=i=1n(f(xi)yi)2

高斯分布的概率函数:
p ( x ) = 1 2 π σ exp ⁡ ( − x 2 2 σ 2 )   ( 2 ) p(x) = \frac{1}{\sqrt {2 \pi} \sigma} \exp{(-\frac{x^2}{2 \sigma ^ 2})} \ (2) p(x)=2π σ1exp(2σ2x2) (2)
(1)带入(2)得到预测值成为真实值的概率函数:
p ( y ( i ) ∣ x ( i ) ; θ ) = 1 2 π σ exp ⁡ ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) p(y ^ {(i)} | x ^ {(i)}; \theta) = \frac{1}{\sqrt {2 \pi} \sigma} \exp{(-\frac{(y^{(i)} - \theta ^ T x ^ {(i)})^2}{2 \sigma ^ 2})} p(y(i)x(i);θ)=2π σ1exp(2σ2(y(i)θTx(i))2)
似然函数:(什么样的参数计算出来的误差最小,即与实际值最接近)
L ( θ ) = ∏ i = 1 m p ( y ( i ) ∣ x ( i ) ; θ ) = ∏ i = 1 m 1 2 π σ exp ⁡ ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) L(\theta) = \prod \limits_{i = 1}^{m} p(y ^ {(i)} | x ^ {(i)}; \theta) = \prod \limits_{i=1}^{m}\frac{1}{\sqrt {2 \pi} \sigma} \exp{(-\frac{(y^{(i)} - \theta ^ T x ^ {(i)})^2}{2 \sigma ^ 2})} L(θ)=i=1mp(y(i)x(i);θ)=i=1m2π σ1exp(2σ2(y(i)θTx(i))2)
对数似然法:(将乘法转化为加法),之后需要用极大似然估计方法求解
l n L ( θ ) = l n ∏ i = 1 m 1 2 π σ exp ⁡ ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) ln L(\theta) = ln \prod \limits_{i=1}^{m}\frac{1}{\sqrt {2 \pi} \sigma} \exp{(-\frac{(y^{(i)} - \theta ^ T x ^ {(i)})^2}{2 \sigma ^ 2})} lnL(θ)=lni=1m2π σ1exp(2σ2(y(i)θTx(i))2)
展开化简:
l n L ( θ ) = ∑ i = 1 m l n 1 2 π σ exp ⁡ ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) = m l n 1 2 π σ − 1 σ 2 1 2 ∑ i = 1 m ( y ( i ) − θ T x ( i ) ) 2 ln L(\theta) = \sum \limits_{i = 1}^{m}ln \frac{1}{\sqrt {2 \pi} \sigma} \exp{(-\frac{(y^{(i)} - \theta ^ T x ^ {(i)})^2}{2 \sigma ^ 2})} \\ = mln \frac{1}{\sqrt {2 \pi} \sigma} - \frac{1}{\sigma^2} \frac{1}{2} \sum \limits _{i = 1}^{m} (y^{(i)} - \theta ^ T x ^ {(i)})^2 lnL(θ)=i=1mln2π σ1exp(2σ2(y(i)θTx(i))2)=mln2π σ1σ2121i=1m(y(i)θTx(i))2

目标:让似然函数越大越好(极大似然估计),即让 J ( θ ) J(\theta) J(θ)越小越好(可以使用最小二乘法求解)
J ( θ ) = 1 2 ∑ i = 1 m ( y ( i ) − θ T x ( i ) ) 2 J(\theta) = \frac{1}{2} \sum \limits _{i = 1}^{m} (y^{(i)} - \theta ^ T x ^ {(i)})^2 J(θ)=21i=1m(y(i)θTx(i))2

其实由损失函数也可以得到同样的式子:

对于 y = θ x + b y = \theta x + b y=θx+b θ \theta θ b b b 也吸入进入得到 θ ^ = ( θ , b ) \hat \theta = (\theta, b) θ^=(θ,b) X X X代表所有的样本数据,最后一个元素置1,最后要和 θ ^ \hat\theta θ^ 相乘,最后求偏导也是一样的结果。
L = ∑ i = 1 n ( y i − f ( x i ) ) 2 = ( y − X θ ^ ) T ( y − X θ ^ ) X = ( x 11 x 12 ⋯ x 1 d 1 x 11 x 12 ⋯ x 1 d 1 ⋮ ⋮ ⋱ ⋮ ⋮ x m 1 x m 2 ⋯ x m d 1 ) = ( x 1 T 1 x 2 T 1 ⋮ ⋮ x m T 1 ) L = \sum \limits_{ i = 1 } ^ n ( y_i - f(x_i)) ^ 2 = (y - X \hat \theta)^T (y - X \hat\theta) \\ X = \begin{pmatrix} x_{11} & x_{12} & \cdots & x_{1d} & 1 \\ x_{11} & x_{12} & \cdots & x_{1d} & 1 \\ \vdots & \vdots & \ddots & \vdots & \vdots \\ x_{m1} & x_{m2} & \cdots & x_{md} & 1 \end{pmatrix} = \begin{pmatrix} x_1^T & 1 \\ x_2^T & 1 \\ \vdots & \vdots \\ x_m^T & 1 \end{pmatrix} L=i=1n(yif(xi))2=(yXθ^)T(yXθ^)X= x11x11xm1x12x12xm2x1dx1dxmd111 = x1Tx2TxmT111

矩阵求导参考:

  • https://zhuanlan.zhihu.com/p/263777564 (先导篇)
  • https://zhuanlan.zhihu.com/p/273729929 (公式篇)

在这里插入图片描述

4 梯度下降

梯度下降法(gradient descent)是一种常用的一阶(first-order)优化方法。主要解决求最小值问题,其基本思想在于不断地逼近最优点,每一步的优化方向就是梯度的方向。

4.1 梯度下降方法

  • 批量梯度下降

容易得到最优解,但是由于每次考虑所有样本,速度很慢。

  • 随机梯度下降

每次找一个样本,迭代速度很快,但不一定每次都朝着收敛的方向。

  • 小批量梯度下降

每次更新一小部分数据来算,因为在整个训练集上算梯度资源消耗太大,我们可以随机采取 b b b个样本 i 1 , i 2 , ⋯   , i b i_1, i_2, \cdots, i_b i1,i2,,ib来近似损失, e e e是损失函数, b b b是批量大小。
1 b ∑ i ∈ I b e ( x i , y i , w ) \frac{1}{b} \sum \limits_{i \in I_b} \mathcal{e}(\mathbf{x_i}, y_i, \mathbf{w}) b1iIbe(xi,yi,w)

4.2 其他参数

  • 学习率:更新的步长

在这里插入图片描述

  • 批处理数量

一般batch_size选择32,64,128等,有时候会考虑内存和效率。

逻辑回归

逻辑回归是一个经典的二分类算法。

1 sigmoid函数

g ( z ) = 1 1 + e − z , z ∈ R g(z) = \frac{1}{1 + e ^ {-z}}, z \in R g(z)=1+ez1,zR

在这里插入图片描述

将任意的输入映射到了 [ 0 , 1 ] [0, 1] [0,1]区间中,在线性回归中可以得到一个预测值,再将该值映射到sigmoid函数中,这样就可以完成由值到概率的转换,这就是分类任务。

2 逻辑回归求解

预测函数:
h θ ( x ) = g ( θ T x ) = 1 1 + e − θ T x 其中 θ 0 + θ 1 x 1 + . . . + θ n x n = ∑ i = 1 n θ i x i = θ T x h_{\theta}(x) = g(\theta ^ T x) = \frac{1}{1 + e ^ {-\theta^T x}} \\ \text{其中} \theta_0 + \theta_1 x_1 + ... + \theta_n x_n = \sum \limits_{i = 1}^n \theta_i x_i = \theta ^ T x hθ(x)=g(θTx)=1+eθTx1其中θ0+θ1x1+...+θnxn=i=1nθixi=θTx
分类任务:
{ P ( y = 1 ∣ x ; θ ) = h θ ( x ) P ( y = 0 ∣ x ; θ ) = 1 − h θ ( x ) ⇒ P ( y ∣ x ; θ ) = ( h θ ( x ) ) y ( 1 − h θ ( x ) ) 1 − y \begin{cases} P(y = 1|x; \theta) = h_\theta(x) \\ P(y = 0|x; \theta) = 1 - h_\theta(x) \end{cases} \Rightarrow P(y | x; \theta) = (h_\theta(x)) ^ y (1 - h_\theta(x)) ^ {1 - y} {P(y=1∣x;θ)=hθ(x)P(y=0∣x;θ)=1hθ(x)P(yx;θ)=(hθ(x))y(1hθ(x))1y
对于二分类任务(0, 1),整合后,y取0只保留 ( 1 − h θ ( x ) ) 1 − y (1 - h_\theta(x)) ^ {1 - y} (1hθ(x))1yy取1只保留 ( h θ ( x ) ) y (h_\theta(x)) ^ y (hθ(x))y

似然函数:
L ( θ ) = ∏ i = 1 m P ( y i ∣ x i ; θ ) = ∏ i = 1 m ( h θ ( x i ) ) i y ( 1 − h θ ( x i ) ) 1 − y i L(\theta) = \prod \limits_{i = 1}^m P(y_i | x_i; \theta) = \prod \limits_{i = 1}^m (h_\theta(x_i)) ^ y_i (1 - h_\theta(x_i)) ^ {1 - y_i} L(θ)=i=1mP(yixi;θ)=i=1m(hθ(xi))iy(1hθ(xi))1yi
对数似然法,即求 l ( θ ) l(\theta) l(θ) 的最大值:
l ( θ ) = l o g L ( θ ) = ∑ i = 1 m ( y i l o g h θ ( x i ) + ( 1 − y i ) l o g ( 1 − h θ ( x i ) ) ) l(\theta) = logL(\theta) = \sum \limits_{i = 1} ^m (y_i log h_\theta(x_i) + (1 - y_i) log (1 - h_\theta(x_i))) l(θ)=logL(θ)=i=1m(yiloghθ(xi)+(1yi)log(1hθ(xi)))
将上述函数转化为求最小值,同时系数乘上一个常数,即求 J ( θ ) = − 1 m l ( θ ) J(\theta) = -\frac{1}{m}l(\theta) J(θ)=m1l(θ) 的最小值,转化为梯度下降问题:
J ( θ ) = − 1 m l ( θ ) J(\theta) = -\frac{1}{m}l(\theta) J(θ)=m1l(θ)
在这里插入图片描述

上述过程即求出了偏导的方向,有了更新方向就可以进行参数更新: α \alpha α代表学习率
θ j = θ j − α 1 m ∑ i = 1 m ( h θ ( x i ) − y i ) x i j \theta_j = \theta_j - \alpha \frac{1}{m} \sum \limits_{i = 1} ^ m (h_\theta(x_i) - y_i)x_i^j θj=θjαm1i=1m(hθ(xi)yi)xij

减法是代表用的梯度下降,整体除以m是考虑了所有的m个样本。

多分类问题:

在这里插入图片描述

Softmax回归是逻辑回归的一般化,相关对比参考 https://zhuanlan.zhihu.com/p/98061179

模型评估标准

1 回归模型评估

1.1 平均绝对误差(Mean Absolute Error,MAE)

平均绝对误差就是指预测值与真实值之间平均相差多大
M A E = 1 m ∑ i = 1 m ∣ f i − y i ∣ MAE = \frac{1}{m}\sum \limits _{i = 1}^m \lvert f_i - y_i \rvert MAE=m1i=1mfiyi

1.2 均方误差(Mean Squared Error,MSE)

观测值与真值偏差的平方和与观测次数的比值
M S E = 1 m ∑ i = 1 m ( f i − y i ) 2 MSE = \frac{1}{m} \sum \limits_{i = 1}^m(f_i - y_i)^2 MSE=m1i=1m(fiyi)2
这也是线性回归中最常用的损失函数,线性回归过程中尽量让该损失函数最小。那么模型之间的对比也可以用它来比较。

MSE可以评价数据的变化程度,MSE的值越小,说明预测模型描述实验数据具有更好的精确度。

1.3 R-square(决定系数)

R 2 = 1 − ∑ ( Y a c t u a l − Y p r e d i c t ) 2 ∑ ( Y a c t u a l − Y m e a n ) 2 R^2 = 1 - \frac{\sum(Y_{actual} - Y_{predict})^2}{\sum(Y_{actual} - Y_{mean})^2} R2=1(YactualYmean)2(YactualYpredict)2

1.4 Adjusted R-Square(校正决定系数)

R a d j u s t e d 2 = 1 − ( 1 − R 2 ) ( n − 1 ) n − p − 1 R^2_{adjusted} = 1 - \frac{(1 - R^2)(n - 1)}{n - p - 1} Radjusted2=1np1(1R2)(n1)

n为样本数量,p为特征数量

消除了样本数量和特征数量的影响

1.5 交叉验证

我们有一个总的数据集,将总数据集切分,例如,将数据分为训练集(80%)和测试集(20%),训练集用来训练model,测试集用来最终的测试。

训练集还再平均进行切分为3份(标号为1、2、3)。

测试集和训练集的比例自己定。

交叉验证就是在训练集中,采用2份数据来训练,用另一份数据来验证训练出的模型的参数,进行3次。

即:1 + 2来训练,3验证;2 + 3来训练,1来验证;1 + 3来训练,2来验证。

为了让模型的评估效果比较好,最后将3次的参数取平均值。

无论分类还是回归模型,都可以利用交叉验证,进行模型评估

sklearn模块中有交叉验证函数,例如sklearn.cross_validation 中的 train_testsplit 函数

交叉验证主要是为了防止某一部分数据比较简单,导致模型的效果比较高。

2 分类模型评估

2.1 准确率、精确率、召回率、f1_score

  • 准确率(Accuracy)的定义是:对于给定的测试集,分类模型正确分类的样本数与总样本数之比;

  • 精确率(Precision)的定义是:对于给定测试集的某一个类别,分类模型预测正确的比例,或者说:分类模型预测的正样本中有多少是真正的正样本;

  • 召回率(Recall)的定义为:对于给定测试集的某一个类别,样本中的正类有多少被分类模型预测正确;

    假设有1000个人,其中990个人正常,有10个人患有癌症,模型旨在预测哪些人是患有癌症的。

    如果模型预测1000个人中都是正常的,没有癌症患者,那么可以说模型的精度是 990 1000 = 0.99 \frac{990}{1000}=0.99 1000990=0.99。虽然精度很高,但是都是正样本,没有负样本,模型是无用的,因为一个患者都没有找到。因此无法用精度来评估模型,而是使用recall召回率来评估。

  • F1_score,在理想情况下,我们希望模型的精确率越高越好,同时召回率也越高越高,但是,现实情况往往事与愿违,在现实情况下,精确率和召回率像是坐在跷跷板上一样,往往出现一个值升高,另一个值降低,那么,有没有一个指标来综合考虑精确率和召回率了,这个指标就是F值。F值的计算公式为:
    F = ( a 2 + 1 ) × P × R a 2 × ( P + R ) F = \frac{(a ^ 2 + 1) \times P \times R}{a ^ 2 \times (P + R)} F=a2×(P+R)(a2+1)×P×R

    P: Precision, R: Recall, a:权重因子

    当a=1时,F值便是F1值,代表精确率和召回率的权重是一样的,是最常用的一种评价指标。

    F1的计算公式为: F 1 = 2 × P × R P + R F1 = \frac{2 \times P \times R}{P + R} F1=P+R2×P×R

2.2 混淆矩阵

混淆矩阵也称误差矩阵,是表示精度评价的一种标准格式,用n行n列的矩阵形式来表示。

具体评价指标有总体精度、制图精度、用户精度等,这些精度指标从不同的侧面反映了图像分类的精度。

下面是一个混淆矩阵,Actual代表真实值,Predicted代表预测值,预测的是标签号(因为是分类任务,主要对标签进行分类)。

下面是我对TP、TN、FP、FN四个值的理解(助记)

TP:预测正确,预测成1

TN:预测正确,预测成0

FP:预测错误,预测成1

FN:预测错误,预测成0

在这里插入图片描述

可以通过上面四个值计算相应的评估值,见下图。

在这里插入图片描述

  • 准确率:预测正确的比例
  • 精确率:在预测之后,在预测结果的某一结果上,正确的比例
  • 召回率:在预测之前,真实值为某一结果上,正确的比例

回归模型相关技巧

1 下采样和上采样

在分类问题的数据中,很容易出现正反数据集数量存在极大的差距,这类数据直接用于训练不利于模型的构架,所以我们需要对数据进行些许处理。

很容易想到,合理的数据集应该是正反数据集数量应接近,那就存在两种策略:

下采样策略:把数量多的减少到与数量少的相近

上(过)采样策略:把数量少的增加到与数量多的相近

  • 下采样:

在这里插入图片描述

  • 上采样:SMOTE算法

步骤:

(1)对于少数类中每一个样本x,以**欧氏距离(两点之间距离)**为标准计算它到少数类样本集中所有样本的距离,得到其k近邻(所有距离排序后前k小的距离)

(2)根据样本不平衡比例设置一个采样比例以确定采样倍率N,对于每一个少数类样本x,从其k近邻中随机选择若干个样本,假设选择的近邻为xn

(3)对于每一个随机选出的近邻xn,分别与原样本按照如下的公式构建新的样本。
x n e w = x + r a n d ( 0 , 1 ) × ( x ~ − x ) x_{new} = x + rand(0, 1) \times (\widetilde x - x) xnew=x+rand(0,1)×(x x)

( x ~ − x ) (\widetilde x - x) (x x) 相当于距离 d i d_i di (欧几里得距离),那么每个 d i d_i di 都可以生成一个新的数据。

在这里插入图片描述

2 正则化惩罚

加上了正则化项能在一定程度上避免过拟合

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

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

相关文章

【大模型推理】vLLM 源码学习

强烈推荐 https://zhuanlan.zhihu.com/p/680153425 sequnceGroup 存储了相同的prompt对应的不同的sequence, 所以用字典存储 同一个Sequence可能占据多个逻辑Block, 所以在Sequence 中用列表存储 同一个block 要维护tokens_id 列表, 需要添加操作。 还需要判断blo…

FIFO和LRU算法实现操作系统中主存管理

FIFO&#xff0c;用数组实现 1和2都是使用nextReplace实现新页面位置的更新 1、不精确时间&#xff1a;用ctime输出运行时间都是0.00秒 #include <iostream> #include <iomanip> #include<ctime>//用于计算时间 using namespace std;// 页访问顺序 int pa…

【Ubuntu24.04】VirtualBox安装ubuntu-live-server24.04

目录 0 背景1 下载镜像2 安装虚拟机3 安装UbuntuServer24.044 配置基本环境5 总结0 背景 有了远程连接工具之后,似乎作为服务器的Ubuntu24.04桌面版有点备受冷落了,桌面版的Ubuntu24.04的优势是图形化桌面,是作为一个日常工作的系统来用的,就像Windows,如果要作为服务器来…

《SpringBoot、Vue 组装exe与套壳保姆级教学》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

Flowable第一篇、快速上手(Flowable安装、配置、集成)

目录 Flowable 概述Flowable的安装与配置 2.1. FlowableUI安装 2.2. Flowable BPMN插件下载 2.3 集成Spring Boot流程审核操作 3.3 简单流程部署 3.4 启动流程实例 3.5 流程审批 一、Flowable 概述 Flowable是一个轻量级、高效可扩展的工作流和业务流程管理&#xff08;BPM&…

Docker搭建有UI的私有镜像仓库

Docker搭建有UI的私有镜像仓库 一、使用这个docker-compose.yml文件&#xff1a; version: 3services:registry-ui:image: joxit/docker-registry-ui:2.5.7-debianrestart: alwaysports:- 81:80environment:- SINGLE_REGISTRYtrue- REGISTRY_TITLEAtt Docker Registry UI- DE…

容器安全检测和渗透测试工具

《Java代码审计》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484219&idx1&sn73564e316a4c9794019f15dd6b3ba9f6&chksmc0e47a67f793f371e9f6a4fbc06e7929cb1480b7320fae34c32563307df3a28aca49d1a4addd&scene21#wechat_redirect Docker-bench-…

Day10_CSS过度动画

Day10_CSS过度动画 背景 : PC和APP项目我们已经开发完毕, 但是再真正开发的时候有些有些简易的动态效果我们可以使用CSS完成 ; 本节课我们来使用CSS完成基础的动画效果 今日学习目标 CSS3过度CSS3平面动态效果CSS3动画效果案例 1. CSS3过渡 ​ 含义 :过渡指的是元素从一种…

iOS应用网络安全之HTTPS

移动互联网开发中iOS应用的网络安全问题往往被大部分开发者忽略, iOS9和OS X 10.11开始Apple也默认提高了安全配置和要求. 本文以iOS平台App开发中对后台数据接口的安全通信进行解析和加固方法的分析. 1. HTTPS/SSL的基本原理 安全套接字层 (Secure Socket Layer, SSL) 是用来…

excel版数独游戏(已完成)

前段时间一个朋友帮那小孩解数独游戏&#xff0c;让我帮解&#xff0c;我看他用电子表格做&#xff0c;只能显示&#xff0c;不能显示重复&#xff0c;也没有协助解题功能&#xff0c;于是我说帮你做个电子表格版的“解题助手”吧&#xff0c;不能直接解题&#xff0c;但该有的…

金融数据中心容灾“大咖说” | 美创科技赋能“灾备一体化”建设

中国人民银行发布的《金融数据中心容灾建设指引》&#xff08;JR/T 0264—2024&#xff09;已于2024年7月29日正式实施。这一金融行业标准对金融数据中心容灾建设中的“组织保障、需求分析、体系规划、建设要求、运维管理”进行了规范和指导。面对不断增加的各类网络、业务、应…

Qt:信号槽

一. 信号槽概念 信号槽 是 Qt 框架中一种用于对象间通信的机制 。它通过让一个对象发出信号&#xff0c;另一个对象连接到这个信号的槽上来实现通信。信号槽机制是 Qt 的核心特性之一&#xff0c;提供了一种灵活且类型安全的方式来处理事件和数据传递。 1. 信号的本质 QT中&a…

SpringBoot与MongoDB深度整合及应用案例

SpringBoot与MongoDB深度整合及应用案例 在当今快速发展的软件开发领域&#xff0c;NoSQL数据库因其灵活性和可扩展性而变得越来越流行。MongoDB&#xff0c;作为一款领先的NoSQL数据库&#xff0c;以其文档导向的存储模型和强大的查询能力脱颖而出。本文将为您提供一个全方位…

大数据调度组件之Apache DolphinScheduler

Apache DolphinScheduler 是一个分布式易扩展的可视化 DAG 工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系&#xff0c;使调度系统在数据处理流程中开箱即用。 主要特性 易于部署&#xff0c;提供四种部署方式&#xff0c;包括Standalone、Cluster、Docker和…

ThinkPHP6门面(Facade)

门面 门面&#xff08;Facade&#xff09; 门面为容器中的&#xff08;动态&#xff09;类提供了一个静态调用接口&#xff0c;相比于传统的静态方法调用&#xff0c; 带来了更好的可测试性和扩展性&#xff0c;你可以为任何的非静态类库定义一个facade类。 系统已经为大部分…

MySQL win安装 和 pymysql使用示例

目录 一、MySQL安装 下载压缩包&#xff1a; 编写配置文件&#xff1a; 配置环境变量&#xff1a; 初始化服务和账户 关闭mysql开机自启&#xff08;可选&#xff09; 建议找一个数据库可视化软件 二、使用pymysql操作数据库 安装pymysql 示例代码 报错处理 一、My…

Parker派克防爆电机在实际应用中的安全性能如何保证?

Parker防爆电机确保在实际应用中的安全性能主要通过以下几个方面来保证&#xff1a; 1.防爆外壳设计&#xff1a;EX系列电机采用强大的防爆外壳&#xff0c;设计遵循严格的防爆标准&#xff0c;能够承受内部可能发生的爆炸而不破损&#xff0c;利用间隙切断原理&#xff0c;防…

空间与单细胞转录组学的整合定位肾损伤中上皮细胞与免疫细胞的相互作用

result 在空间转录组图谱中对人类肾脏进行无监督映射和细胞类型鉴定 我们试图在H&E染色的人类参考肾切除标本组织切片上直接映射转录组特征。该组织来自一名59岁的女性&#xff0c;其肾小球闭塞和间质纤维化程度最低&#xff08;分别影响不到10%的肾小球或肾实质&#xff…

greater<>() 、less<>()及运算符 < 重载在排序和堆中的使用

简略图 greater<>()(a, b) a > b 返回true&#xff0c;反之返回false less<>()(a, b) a < b 返回true&#xff0c;反之返回false 在cmp中使用&#xff08;正着理解&#xff09; 规则返回true时a在前&#xff0c;反之b在前 在priority_queue中使用 &#xff…

详细描述一下Elasticsearch索引文档的过程?

大家好&#xff0c;我是锋哥。今天分享关于【详细描述一下Elasticsearch索引文档的过程&#xff1f;】面试题。希望对大家有帮助&#xff1b; 详细描述一下Elasticsearch索引文档的过程&#xff1f; Elasticsearch的索引文档过程是其核心功能之一&#xff0c;涉及将数据存储到…