数学建模笔记—— 主成分分析(PCA)

数学建模笔记—— 主成分分析

  • 主成分分析
    • 1. 基本原理
      • 1.1 主成分分析方法
      • 1.2 数据降维
      • 1.3 主成分分析原理
      • 1.4 主成分分析思想
    • 2. PCA的计算步骤
    • 3. 典型例题
    • 4. 主成分分析说明
    • 5. python代码实现

主成分分析

1. 基本原理

在实际问题研究中,多变量问题是经常会遇到的。变量太多,无疑会增加分析问题的难度与复杂性,而且在许多实际问题中,多个变量之间是具有一定的相关关系的。因此,人们会很自然地想到,能否在相关分析的基础上,用较少的新变量代替原来较多的旧变量,而且使这些较少的新变量尽可能多地保留原来变量所反映的信息?

一个简单的例子:

例如,某人要做一件上衣要测量很多尺寸,如身长、袖长、胸围、腰围、肩宽、肩厚等十几项指标,但某服装厂要生产一批新型服装绝不可能把尺寸的型号分得过多?

我们可以把多种指标中综合成几个少数的综合指标,做为分类的型号,将十几项指标综合成3项指标,一项是反映长度的指标,一项是反映胖瘦的指标,一项是反映特殊体型的指标。

1.1 主成分分析方法

在分析研究多变量的课题时,变量太多就会增加课题的复杂性。人们自然希望变量个数较少而得到的信息较多。在很多情形,变量之间是有一定的相关关系的,可以解释为这两个变量反映此课题的信息有一定的重叠。主成分分析是对于原先提出的所有变量,将重复的变量(关系紧密的变量)删去多余,建立尽可能少的新变量,使得这些新变量是两两不相关的,且这些新变量在反映课题的信息方面尽可能保持原有的信息。设法将原来变量重新组合成一组新的互相无关的几个综合变量,同时根据实际需要从中可以取出几个较少的综合变量尽可能多地反映原来变量的信息的统计方法叫做主成分分析或称主分量分析,也是数学上用来降维的一种方法。

1.2 数据降维

降维是将高维度的数据(指标太多)保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的。在实际的生产和应用中,降维在一定的信息损失范围内,可以为我们节省大量的时间和成本。降维也成为应用非常广泛的数据预处理方法。

降维优点:

  1. 使得数据集更易使用
  2. 除噪声
  3. 降低算法的计算开销
  4. 使得结果容易理解

1.3 主成分分析原理

PCA的主要目标是将特征维度变小,同时尽量减少信息损失。就是对一个样本矩阵,**一是换特征,**找一组新的特征来重新标识;**二是减少特征,**新特征的数目要远小于原特征的数目。

通过PCA将n维原始特征映射到k维(k<n)上,称这k维特征为主成分。需要强调的是,不是简单地从n维特征中去除其余n-k维特征,而是重新构造出全新的k维正交特征,且新生成的k维数据尽可能多地包含原来n维数据的信息。例如,使用PCA将20个相关的特征转化为5个无关的新特征,并且尽可能保留原始数据集的信息。

怎么找到新的维度呢?实质是数据间的方差够大,通俗地说,就是能够使数据到了新的维度基变换下,坐标点足够分散,数据间各有区分。

如图所示的左图中有5个离散点,降低维度,就是需要把点映射成一条线。将其映射到右图中黑色虚线上则样本变化最大,且坐标点更分散,这
条黑色虚线就是第一主成分的投影方向。

image-20240829134429153

PCA是一种线性降维方法,即通过某个投影矩阵将高维空间中的原始样本点线性投影到低维空间,以达到降维的目的,线性投影就是通过矩阵变换的方式把数据映射到最合适的方向。

降维的几何意义可以理解为旋转坐标系,取前k个轴作为新特征。

对于下图所示的情况,我们发现这些数据都几乎排列在一条直线上,并且在x轴方向和y轴方向的方差都比较大。但是如果把坐标轴旋转一定角度,使得这些数据在某个坐标轴的投影的方差比较大,便可以用新坐标系下方差较大的一个坐标轴坐标作为主成分。对于左图,数据为(1,2)、(2,4)…旋转坐标轴后,坐标为 ( 5 , 0 ) 、 ( 2 5 , 1 ) … … (\sqrt5,0)、\begin{pmatrix}2\sqrt5,1\end{pmatrix}\ldots\ldots (5 ,0)(25 ,1)……这样主成分就是新坐标系下变量 x x x的数值 5 、 2 5 . . . . . . \sqrt{5}、2\sqrt{5}...... 5 25 ......

image-20240829135154880

对于大多数情况,数据各个变量基本服从正态分布,所以变量为2的数据散点分布大致为一个椭圆,变量为3的散点分布大致为一个椭球,p个变量的数据大致分布在一个超椭圆。而通过旋转坐标系,使得超椭圆的长轴落在一个坐标轴上,其次超椭圆另一个轴也尽量落在坐标轴上。这样各个新的坐标轴上的坐标值便是相应的主成分。

例如,对于图示的数据,在x轴和y轴的方差都很大,所以可以旋转坐标系,使得椭圆两个轴尽量落在坐标轴上。这样,我们便以散点在新坐标系下的x坐标作为第一主成分(因为x方向方差最大),y轴的坐标为第二主成分。

image-20240829135644616

主成分分析的理论推导较为复杂,需要借助投影寻踪,构造目标函数等方法来推导,在多元统计的相关书籍中都有详细讲解。但是其结论却是十分简洁。所以,如果只是需要实际应用,了解主成分分析的基本原理与实现方法便足够了。

降维的代数意义可以理解为:

m × n m\times n m×n阶的原始样本 X X X,与 n × k n\times k n×k阶矩阵 W W W做矩阵乘法运算 X × W X\times W X×W,即可得到 m × k m\times k m×k阶低维矩阵 Y Y Y,这里的 n × k n\times k n×k阶矩阵 W W W就是投影矩阵。

1.4 主成分分析思想

假设有 n n n个样本, p p p个指标,则可构成大小为 n × p n\times p n×p的样本矩阵 x : x: x:
x = [ x 11 x 12 ⋯ x 1 p x 21 x 22 ⋯ x 2 p ⋮ ⋮ ⋱ ⋮ x n 1 x n 2 ⋯ x n p ] = ( x 1 , x 2 , ⋯ , x p ) x=\begin{bmatrix}x_{11}&x_{12}&\cdots&x_{1p}\\x_{21}&x_{22}&\cdots&x_{2p}\\\vdots&\vdots&\ddots&\vdots\\x_{n1}&x_{n2}&\cdots&x_{np}\end{bmatrix}=\begin{pmatrix}x_1,x_2,\cdots,x_p\end{pmatrix} x= x11x21xn1x12x22xn2x1px2pxnp =(x1,x2,,xp)
假设我们想找到新的一组变量 z 1 , z 2 , ⋅ ⋅ ⋅ , z m ( m ≤ p ) z_1,z_2,\cdotp\cdotp\cdotp,z_m(m\leq p) z1,z2,⋅⋅⋅,zm(mp),且它们满足:
{ z 1 = l 11 x 1 + l 12 x 2 + ⋯ + l 1 p x p z 2 = l 21 x 1 + l 22 x 2 + ⋯ + l 2 p x p ⋮ z m = l m 1 x 1 + l m 2 x 2 + ⋯ + l m p x p \begin{cases}z_1=l_{11}x_1+l_{12}x_2+\cdots+l_{1p}x_p\\z_2=l_{21}x_1+l_{22}x_2+\cdots+l_{2p}x_p\\\vdots\\z_m=l_{m1}x_1+l_{m2}x_2+\cdots+l_{mp}x_p\end{cases} z1=l11x1+l12x2++l1pxpz2=l21x1+l22x2++l2pxpzm=lm1x1+lm2x2++lmpxp
系数 l i j l_{ij} lij的确定原则:

  1. z i z_i zi z j ( i ≠ j ; i , j = 1 , 2 , , m ) z_j(i\neq j;i,j=1,2,,m) zj(i=j;i,j=1,2,,m)相互无关
  2. z 1 z_1 z1是与 x 1 , x 2 , . . . , x p x_1,x_2,...,x_p x1,x2,...,xp 的一切线性组合中方差最大者
  3. z 2 z_2 z2 z 1 z_1 z1不相关的 x 1 , x 2 , . . . , x p x_1,x_2,...,x_p x1,x2,...,xp 的一切线性组合中方差最大者
  4. 以此类推, z m z_m zm是与 z 1 , z 2 , . . . , z m − 1 z_1,z_2,...,z_{m-1} z1,z2,...,zm1不相关的 x 1 , x 2 , . . . , x p x_1,x_2,...,x_p x1,x2,...,xp 的所有线性组合中方差最大者
  5. 新变量指标 z 1 , z 2 , . . . , z m z_1,z_2,...,z_m z1,z2,...,zm分别称为原变量指标 x 1 , x 2 , . . . , x p x_1,x_2,...,x_p x1,x2,...,xp的第一,第二,…,第m主成分

2. PCA的计算步骤

假设有 n n n个样本, p p p个指标,则可构成大小为 n × p n\times p n×p的样本矩阵 x : x: x:
x = [ x 11 x 12 ⋯ x 1 p x 21 x 22 ⋯ x 2 p ⋮ ⋮ ⋱ ⋮ x n 1 x n 2 ⋯ x n p ] = ( x 1 , x 2 , ⋯ , x p ) x=\begin{bmatrix}x_{11}&x_{12}&\cdots&x_{1p}\\x_{21}&x_{22}&\cdots&x_{2p}\\\vdots&\vdots&\ddots&\vdots\\x_{n1}&x_{n2}&\cdots&x_{np}\end{bmatrix}=\begin{pmatrix}x_1,x_2,\cdots,x_p\end{pmatrix} x= x11x21xn1x12x22xn2x1px2pxnp =(x1,x2,,xp)

  1. 首先对其进行标准化处理

    按列计算均值 x ‾ j = 1 n Σ i = 1 n x i j \overline x_j=\frac1n\Sigma_{i=1}^nx_{ij} xj=n1Σi=1nxij和标准差 S j = ∑ i = 1 n ( x i j − x j ‾ ) 2 n − 1 S_j= \sqrt {\frac {\sum _{i= 1}^n( x_{ij}- \overline {x_j}) ^2}{n- 1}} Sj=n1i=1n(xijxj)2 , 计算得标准化数据 X i j = x i j − x j ‾ s j X_{ij}=\frac{x_{ij}-\overline{x_j}}{s_j} Xij=sjxijxj
    原始样本矩阵经过标准化变为:
    X = [ X 11 X 12 ⋯ X 1 p X 21 X 22 ⋯ X 2 p ⋮ ⋮ ⋱ ⋮ X n 1 X n 2 ⋯ X n p ] = ( X 1 , X 2 , ⋯ , X p ) \begin{aligned}&X=\begin{bmatrix}X_{11}&X_{12}&\cdots&X_{1p}\\X_{21}&X_{22}&\cdots&X_{2p}\\\vdots&\vdots&\ddots&\vdots\\X_{n1}&X_{n2}&\cdots&X_{np}\end{bmatrix}=\begin{pmatrix}X_1,X_2,\cdots,X_p\end{pmatrix}\end{aligned} X= X11X21Xn1X12X22Xn2X1pX2pXnp =(X1,X2,,Xp)

  2. 计算标准化样本的协方差矩阵/样本相关系数矩阵
    R = [ r 11 r 12 ⋯ r 1 p r 21 r 22 ⋯ r 2 p ⋮ ⋮ ⋱ ⋮ r n 1 r n 2 ⋯ r n p ] 其中 r i j = 1 n − 1 ∑ k = 1 n ( X k i − X i ‾ ) ( X k j − X j ‾ ) \begin{aligned}&R=\begin{bmatrix}r_{11}&r_{12}&\cdots&r_{1p}\\r_{21}&r_{22}&\cdots&r_{2p}\\\vdots&\vdots&\ddots&\vdots\\r_{n1}&r_{n2}&\cdots&r_{np}\end{bmatrix}\\&\text{其中}\quad r_{ij}=\frac{1}{n-1}\sum_{k=1}^{n}\Big(X_{ki}-\overline{X_{i}}\Big)\Big(X_{kj}-\overline{X_{j}}\Big)\end{aligned} R= r11r21rn1r12r22rn2r1pr2prnp 其中rij=n11k=1n(XkiXi)(XkjXj)

  3. 计算 R R R的特征值和特征向量
    特征值: λ 1 ≥ λ 2 ≥ . . . ≥ λ p ≥ 0 特征向量: a 1 = [ a 11 a 21 ⋮ a p 1 ] , a 2 = [ a 12 a 22 ⋮ a p 2 ] , ⋯ , a p = [ a 1 p a 2 p ⋮ a p p ] \begin{aligned}&\text{特征值:}\quad\lambda_1\geq\lambda_2\geq...\geq\lambda_p\geq0\\&\text{特征向量:}\quad a_1=\begin{bmatrix}a_{11}\\a_{21}\\\vdots\\a_{p1}\end{bmatrix},a_2=\begin{bmatrix}a_{12}\\a_{22}\\\vdots\\a_{p2}\end{bmatrix},\cdots, a_p=\begin{bmatrix}a_{1p}\\a_{2p}\\\vdots\\a_{pp}\end{bmatrix}\end{aligned} 特征值:λ1λ2...λp0特征向量:a1= a11a21ap1 ,a2= a12a22ap2 ,,ap= a1pa2papp

  4. 计算主成分贡献率以及累计贡献率
    贡献率 α i λ i ∑ k = 1 p λ k ( i = 1 , 2 , . . . , p ) 累计贡献率 ∑ G ∑ k − 1 i λ k ∑ k = 1 p λ k ( i = 1 , 2 , . . . , p ) \text{贡献率}\alpha_i\frac{\lambda_i}{\sum_{k=1}^p\lambda_k}(i=1,2,...,p)\quad\text{累计贡献率}\sum G\frac{\sum_{k-1}^i\lambda_k}{\sum_{k=1}^p\lambda_k}(i=1,2,...,p) 贡献率αik=1pλkλi(i=1,2,...,p)累计贡献率Gk=1pλkk1iλk(i=1,2,...,p)

  5. 写出主成分

    一般取累计贡献率超过80%的特征值所对应的第一、第二、…第 m ( m ≤ p ) m(m\le p) m(mp)个主成分。第 i i i个主成分:
    F i = a 1 i X 1 + a 2 i X 2 + . . . + a p i X p ( i = 1 , 2 , . . . , m ) F_{i}=a_{1i}X_{1}+a_{2i}X_{2}+...+a_{pi}X_{p} (i=1 ,2 ,... ,m) Fi=a1iX1+a2iX2+...+apiXp(i=1,2,...,m)

  6. 根据系数分析主成分代表的意义

    对于某个主成分而言,指标前面的系数越大,代表该指标对于该主成分的影响越大。

  7. 利用主成分的结果进行后续的分析

    • 主成分得分
    • 聚类分析
    • 回归分析

3. 典型例题

在制定服装标准的过程中,对128名成年男子的身材进行了测量,每人测得的指标中含有这样的六项:身高 ( x 1 ) (x_1) (x1)、坐高 ( x 2 ) (x_2) (x2)、胸围 ( x 3 ) (x_3) (x3)、手臂长 ( x 4 ) (x_4) (x4)、肋围 ( x 5 ) (x_5) (x5)、腰围 ( x 6 ) (x_6) (x6)。所得样本相关系数矩阵(对称矩阵)如下表:

x 1 x_{1} x1 x 2 x_{2} x2 x 3 x_{3} x3 x 4 x_{4} x4 x 5 x_{5} x5 x 6 x_{6} x6
x 1 x_1 x110.790.360.760.250.51
x 2 x_2 x20.7910.310.550.170.35
x 3 x_3 x30.360.3110.350.640.58
x 4 x_4 x40.760.550.3510.160.38
x 5 x_5 x50.250.170.640.1610.63
x 6 x_6 x60.510.350.580.380.631

注意:本题给我们的数据直接就是样本相关系数矩阵,一般来说,大家自己建模的时候,得到的是原始数据。

经过计算,相关系数矩阵的特征值、相应的特征向量以及贡献率列于下表:

特征向量 a 1 a_{1} a1 a 2 a_{2} a2 a 3 a_{3} a3 a 4 a_4 a4 a 5 a_5 a5 a 6 a_{6} a6
x 1 : x_1: x1: 身高0.469-0.3650.092-0.122-0.080-0.786
x 2 : x_2: x2: 坐高0.404-0.3970.6130.3260.0270.443
x 3 : x_3: x3: 胸围0.3940.397-0.2790.6560.405-0.125
x 4 : x_4: x4: 手臂长0.408-0.365-0.705-0.108-0.2350.371
x 5 : x_5: x5: 肋围0.3370.5690.164-0.019-0.7310.034
x 6 : x_6: x6: 腰围0.4270.3080.119-0.6610.4900.179
特征值3.2871.4060.4590.4260.2950.126
贡献率0.5480.2340.0770.0710.0490.021
累计贡献率0.5480.7820.8590.9300.9791.000

从表中可以看到前三个主成分的累计贡献率达85.9%,因此可以考虑只取三个主成分,他们能够很好地概括原始变量。

写出主成分并分析解释含义
F 1 = 0.469 X 1 + 0.404 X 2 + 0.394 X 3 + 0.408 X 4 + 0.339 X 5 + 0.427 X 6 F 2 = − 0.365 X 1 − 0.397 X 2 + 0.397 X 3 − 0.365 X 4 + 0.569 X 5 + 0.308 X 6 F 3 = 0.092 X 1 + 0.613 X 2 − 0.279 X 3 − 0.705 X 4 + 0.164 X 5 + 0.119 X 6 X i 均是标准化后的指标, x i : 身高、坐高、胸围、手臂长、肋围和腰围 F_{1}=0.469X_{1}+0.404X_{2}+0.394X_{3}+0.408X_{4}+0.339X_{5}+0.427X_{6}\\F_{2}=-0.365X_{1}\:-\:0.397X_{2}+0.397\:X_{3}\:-\:0.365X_{4}+0.569X_{5}+0.308X_{6}\\F_{3}=0.092X_{1}\:+0.613X_{2}\:-0.279X_{3}\:-0.705X_{4}\:+0.164X_{5}\:+0.119X_{6}\\ X_i均是标准化后的指标,x_i:身高、坐高、胸围、手臂长、肋围和腰围 F1=0.469X1+0.404X2+0.394X3+0.408X4+0.339X5+0.427X6F2=0.365X10.397X2+0.397X30.365X4+0.569X5+0.308X6F3=0.092X1+0.613X20.279X30.705X4+0.164X5+0.119X6Xi均是标准化后的指标,xi:身高、坐高、胸围、手臂长、肋围和腰围

  • 第一主成分 F 1 F_{1} F1对所有(标准化)原始变量都有近似相等的正载荷,故称第一主成分为**(身材)大小成分**
  • 第二主成分 F 2 F_2 F2 X 3 , X 5 , X 6 X_3,X_5,X_6 X3,X5,X6上有中等程度的正载荷,而在 X 1 , X 2 , X 4 X_1,X_2,X_4 X1,X2,X4上有中等程度的负载荷,称第二主成分为形状成分(或胖瘦成分)
  • 第三主成分 F 3 F_3 F3 X 2 X_2 X2上有大的正载荷,在 X 4 X_4 X4上有大的负载荷,而在其余变量上的载荷都较小,可称为第三主成分为臂长成分
  • 当然,由于第三主成分贡献率不算高,实际意义也不太重要,因此我们可以考虑只取前两个。

4. 主成分分析说明

在主成分分析中,我们首先应保证所提取的前几个主成分的累计贡献率达到一个较高的水平,其次对这些被提取的主成分必须都能够给出符合实际背景和意义的解释。

主成分的解释其含义一般多少带有点模糊性,不像原始变量的含义那么清楚、确切,这是变量降维过程中不得不付出的代价。因此,提取的主成分个数m通常应明显小于原始变量个数p(除非p本身较小),否则维数降低的“利”可能抵不过主成分含义不如原始变量清楚的“弊”。

如果原始变量之间具有较高的相关性,则前面少数几个主成分的累计贡献率通常就能达到一个较高水平,也就是说,此时的累计贡献率通常较易得到满足。主成分分析的困难之处主要在于要能够给出主成分的较好解释,所提取的主成分中如有一个主成分解释不了,整个主成分分析也就失败了。主成分分析是变量降维的一种重要、常用的方法,简单的说,该方法要应用得成功,一是靠原
始变量的合理选取,二是靠“运气”。

– 参考教材:《应用多元统计分析》王学民

5. python代码实现

数据data.csv内容如下:

年份,单产,种子费,化肥费,农药费,机械费,灌溉费
1990,1017.0,106.05,495.15,305.1,45.9,56.1
1991,1036.5,113.55,561.45,343.8,68.55,93.3
1992,792.0,104.55,584.85,414.0,73.2,104.55
1993,861.0,132.75,658.35,453.75,82.95,107.55
1994,901.5,174.3,904.05,625.05,114.0,152.1
1995,922.5,230.4,1248.75,834.45,143.85,176.4
1996,916.5,238.2,1361.55,720.75,165.15,194.25
1997,976.5,260.1,1337.4,727.65,201.9,291.75
1998,1024.5,270.6,1195.8,775.5,220.5,271.35
1999,1003.5,286.2,1171.8,610.95,195.0,284.55
2000,1069.5,282.9,1151.55,599.85,190.65,277.35
2001,1168.5,317.85,1105.8,553.8,211.05,290.1
2002,1228.5,319.65,1213.05,513.75,231.6,324.15
2003,1023.0,368.4,1274.1,567.45,239.85,331.8
2004,1144.5,466.2,1527.9,487.35,408.0,336.15
2005,1122.0,449.85,1703.25,555.15,402.3,358.8
2006,1276.5,537.0,1888.5,637.2,480.75,428.4
2007,1233.0,565.5,2009.85,715.65,562.05,456.9

源码如下:

import pandas as pd
import numpy as np# 在python中导入scipy库的linalg模块
# scipy是python中的一个科学计算库,linalg模块包含了线性代数的函数
from scipy import linalg# 读取csv文件的后五行
df = pd.read_csv('data.csv', usecols=[2, 3, 4, 5, 6])
# print(df)# df.to_numpy()是pandas对象中的一个方法,用于将DataFrame转换为NumPy数组
x = df.to_numpy()
# print(x)# 标准化数据
X = (x-np.mean(x, axis=0))/np.std(x, ddof=1, axis=0)# 计算协方差矩阵
R = np.cov(X.T)# 计算特征值和特征向量
eigvals, eigvecs = linalg.eigh(R)
# 将特征值数组按降序排列
eigvals = eigvals[::-1]
# 将特征向量数组按降序排列
eigvecs = eigvecs[:, ::-1]# 计算主成分贡献率和累积贡献率
contribution_rate = eigvals/sum(eigvals)
# np.cumsum()是numpy中的一个函数,用于计算数组的累积和
cumulative_contribution_rate = np.cumsum(contribution_rate)# 打印结果
print("特征值为:")
print(eigvals)
print("贡献率为:")
print(contribution_rate)
print("累积贡献率为:")
print(cumulative_contribution_rate)
print("与特征值对应的特征向量为:")
print(eigvecs)

输出结果:

特征值为:
[4.09453559 0.79266524 0.08165257 0.02069963 0.01044696]
贡献率为:
[0.81890712 0.15853305 0.01633051 0.00413993 0.00208939]
累积贡献率为:
[0.81890712 0.97744017 0.99377068 0.99791061 1.        ]
与特征值对应的特征向量为:
[[-0.48104689  0.23837363 -0.01782683 -0.0038534   0.84346859][-0.48753322 -0.07920883 -0.33594594 -0.7565078  -0.26622096][-0.28138862 -0.92242424 -0.00452323  0.24430868  0.10122639][-0.47315152  0.26834026 -0.46128305  0.60577733 -0.35266544][-0.47733984  0.11845256  0.82098722  0.03206562 -0.28821424]]

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

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

相关文章

Java中的类加载与卸载机制详解

在Java虚拟机&#xff08;JVM&#xff09;中&#xff0c;类加载和类卸载机制是Java运行时环境的重要组成部分。理解类的加载与卸载不仅有助于深入掌握JVM的运行原理&#xff0c;还可以帮助开发者优化程序性能&#xff0c;特别是在内存管理和应用程序生命周期管理中起到关键作用…

《零散知识点 · Kafka 知识拓展》

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

基于单片机的人脸识别的智能门禁系统设计

文章目录 前言资料获取设计介绍功能介绍设计清单核心代码具体实现截图参考文献设计获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师&#xff0c;一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等…

教师节特辑:AI绘制的卡通人物,致敬最可爱的人‍

【编号&#xff1a;9】教师节到了&#xff0c;今天我要分享一组由AI绘制的教师节主题卡通人物插画&#xff0c;每一幅都充满了对老师的敬意和爱戴。让我们一起用这些可爱的卡通形象&#xff0c;向辛勤的园丁们致敬&#xff01; &#x1f393;【教师形象】 这…

并发编程 - NSThread

引言 关于并发编程&#xff0c;我们在前面的博客中已经介绍过了GCD和NSOperation&NSOperationQueue。这两种方案足以覆盖大多数开发场景。然而&#xff0c;理解NSThread仍然是有必要的。虽然它在现代开发中使用较少&#xff0c;但对于理解底层线程管理和并发编程的基础&am…

量化交易backtrader实践(一)_数据获取篇(2)_tushare与akshare

上一节回顾 在上一节中&#xff0c;从股票的基本功能和主要数据进行小结&#xff0c;明确了进行backtrader回测所需要的数据&#xff0c;并且学习了backtrader的数据来源以及PandasData的格式要求&#xff0c;已经做到假设拿到.txt或.csv文件后&#xff0c;能把里面的股票基本…

赎金信--力扣383

赎金信 题目思路一方法一&#xff1a;哈希表思路二方法二 数组 题目 思路一 我们使用哈希表map的思路&#xff0c;A能不能由B组成&#xff0c;说明B包含的元素个数要大于等于A。 所以我们先利用map的key和value分别对magazine中的出现的字符以及出现的次数存储起来。 然后我们…

【射频通信电子线路基础第三讲】射频网络与阻抗匹配包括射频电路与网络、二端口射频网络参数,阻抗匹配解析法

一、射频电路与网络 1、物理等效电路与网络等效电路 &#xff08;1&#xff09;物理等效电路&#xff1a;是基于电流电压的等效电路&#xff0c;采用集总参数&#xff0c;反应电路内部的原理 &#xff08;2&#xff09;网络等效电路&#xff1a;是基于功率的等效电路&#x…

页面水印的实现以及防删除方案

水印相关 引言绘制一个水印输出背景图封装一点点细节图片加水印防止水印删除问题解决方案 引言 在企业里为了防止信息泄露和保护知识产权&#xff0c;通常会在页面和图片上添加水印 前端页面水印的添加一般有这几种方式&#xff1a;dom 元素循环、canvas 输出背景图、svg 实现…

企业财税自动化解决方案的成本效益分析与投资回报预测

随着企业规模的扩大和业务复杂度的增加&#xff0c;企业在财务管理方面也面临着诸多挑战&#xff0c;传统的财务管理方式逐渐无法满足企业经营需求&#xff0c;借助财税自动化解决方案来提高财务效率和准确性、降低人力成本&#xff0c;为企业带来长期的效益提升&#xff0c;已…

通过战略性SEO整合提升B2B内容的可见性、权威性和投资回报率

精明的市场营销者知道&#xff0c;尽管B2B营销的重点是推动商业采购&#xff0c;但归根结底&#xff0c;商务买家依然是消费者。无论你是针对返校购物的父母的鞋子品牌&#xff0c;还是寻找新的内容制作合作伙伴以扩大内容计划的市场营销领导者&#xff0c;搜索引擎优化&#x…

航空航天混合动力(2)电动飞机发展中的电气连接挑战

航空航天混合动力(2)电动飞机发展中的电气连接挑战 1.概述2.更高的电压(千伏)和功率(兆瓦)2.缓解局部放电/电晕效应3.提高可靠性,更恶劣的环境,频繁的维护和检查,冲击和振动4.减重5.抗电弧跟踪和液压油阻力6.严格的可燃性,毒性和烟雾要求7.海拔和气压的影响8.工作温度范围…

远程存储 RDMA

什么是 RDMA RDMA&#xff08;Remote Direct Memory Access&#xff09;指的是远程直接内存访问&#xff0c;这是一种通过网络在两个应用程序之间搬运缓冲区里的数据的方法。 Remote&#xff1a;数据通过网络与远程机器间进行数据传输。 Direct&#xff1a;没有内核的参与&am…

【区块链 + 人才服务】CERX- 基于联盟链的研学资源交换网络 | FISCO BCOS应用案例

CERX 是定位于面向高校科学研究与教学的分布式研学资产交换网络&#xff0c;构建一个用于数据、算法模型、论文和课程的研学资源价值流转平台。该平台采用 FISCO BCOS 联盟链为核心区块链层。 CERX 基于“交叉学科”的人才培养生态&#xff0c;围绕“科研、课件、课程、证书”…

Linux基础3-基础工具1(什么是工具,yum,vim基础)

目录 一.什么是工具 二.yum 2.1 yum基础 2.2 yum拓展 2.3 rzsz 三.vim基础 四.下章内容 1. vim 插入模式&#xff0c;底行模式&#xff0c;命令模式下详解。vim基础配置 2. gcc/g 基础 一.什么是工具 工具的本质是也是指令。通过工具我们能快速的实现某些功能 二.yum 2.1…

JVM合集

序言: 1.什么是JVM? JVM就是将javac编译后的.class字节码文件翻译为操作系统能执行的机器指令翻译过程: 前端编译:生成.class文件就是前端编译后端编译:通过jvm解释(或即时编译或AOT)执行.class文件时跨平台的,jvm并不是跨平台的通过javap进行反编译2.java文件是怎么变…

任意论文一键变播客,谷歌正式发布Illuminate,它能重构研究者的学习方式吗?

先来听一段英文播客&#xff0c;内容是不是很熟悉&#xff1f; &#xff0c;时长04:27 是的&#xff0c;这俩人就是在聊那篇《Attention is All You Need》。在 4 分半的对话里&#xff0c;他们介绍了论文的核心内容&#xff0c;一问一答&#xff0c;听上去相当自然。 播客原址…

SpringBoot大学生租房平台:技术实现与市场分析

第2章 开发环境与技术 大学生租房平台的编码实现需要搭建一定的环境和使用相应的技术&#xff0c;接下来的内容就是对大学生租房平台用到的技术和工具进行介绍。 2.1 MYSQL数据库 本课题所开发的应用程序在数据操作方面是不可预知的&#xff0c;是经常变动的&#xff0c;没有办…

[最优化方法] 《最优化方法》个人问答式学习笔记 with LLM

《最优化方法》问答式学习笔记 with LLM 文章目录 《最优化方法》问答式学习笔记 with LLM写在前面每周提问的链接表格绪论 | 第一周 | [answer by 文心一言]Q1 请为我解释一下最优化方法研究的核心重点主要是哪些&#xff1f;一、问题定义与建模二、求解方法三、算法性能与优化…

HTML5+CSS+JS制作中秋佳节页面

HTML5CSSJS制作中秋佳节页面 中秋节&#xff0c;是中国民间的传统节日。每年农历八月十五庆祝。 在中秋节这一天&#xff0c;人们会通过各种方式庆祝&#xff0c;其中最重要的活动之一就是赏月。家人团聚在一起&#xff0c;共同欣赏明亮的月亮。同时&#xff0c;吃月饼也是中秋…