探究主成分分析方法数学原理

目录

1、简介

2、实现原理

3、实现步骤

4、公式分析

5、实例分析

6、⭐协方差矩阵补充说明

7、LaTex文本


⭐创作不易,您的一键三连,就是支持我写作的最大动力!🥹

关于代码如何实现,请看这篇文章:[机器学习]特征工程:主成分分析_逐梦苍穹的博客-CSDN博客icon-default.png?t=N6B9https://blog.csdn.net/qq_60735796/article/details/132324240

1、简介

主成分分析(Principal Component Analysis,PCA)是一种常用的数据降维和特征提取技术用于将高维数据转化为低维表示,同时保留数据的主要特征。

它通过线性变换将原始特征投影到新的坐标轴上,使得投影后的特征具有最大的方差,从而达到降低数据维度的目的。

PCA 的主要思想是寻找数据中的主要方向,即数据的主成分,这些主成分是数据变化最大的方向。通过保留最重要的主成分,可以将数据的维度减少,从而减少存储和计算的成本,同时可以降低数据中的噪声和冗余信息,提高模型的泛化能力。

2、实现原理

PCA(Principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据降维算法。

PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。

PCA的工作就是从原始的空间中顺序地找一组相互正交的坐标轴,新的坐标轴的选择与数据本身是密切相关的。

其中,第一个新坐标轴选择是原始数据中方差最大的方向,第二个新坐标轴选取是与第一个坐标轴正交的平面中使得方差最大的,第三个轴是与第1,2个轴正交的平面中方差最大的。

依次类推,可以得到n个这样的坐标轴。

通过这种方式获得的新的坐标轴,我们发现,大部分方差都包含在前面k个坐标轴中,后面的坐标轴所含的方差几乎为0。

于是,我们可以忽略余下的坐标轴,只保留前面k个含有绝大部分方差的坐标轴。

事实上,这相当于只保留包含绝大部分方差的维度特征,而忽略包含方差几乎为0的特征维度,实现对数据特征的降维处理。

3、实现步骤

PCA 的工作步骤如下:

  1. 标准化数据
  2. 计算数据的协方差矩阵。
  3. 对协方差矩阵进行特征值分解,得到特征值和特征向量。
  4. 将特征值按从大到小的顺序排列,选择前几个特征值对应的特征向量作为主成分。
  5. 将原始数据投影到选定的主成分上,得到降维后的数据。

4、公式分析

①特征样本均值:\overline{x}= \frac{1}{n}\sum_{i=1}^{n}{x_i}

②特征样本方差:{S}^2= \frac{1}{n-1}\sum_{i=1}^{n}{(x_i-\overline{x})^2}

③特征方差:{S}^2= \frac{1}{n}\sum_{i=1}^{n}{(x_i-\overline{x})^2}

④协方差:\text{Cov}(X, Y) = \frac{1}{n} \sum_{i=1}^{n} (x_i - \bar{x})(y_i - \bar{y})

⑤协方差矩阵:\text{Cov}(X_1,X_2,...X_p) = \begin{bmatrix} \text{Cov}(X_1, X_1) & \text{Cov}(X_1, X_2) & \dots & \text{Cov}(X_1, X_p) \\ \text{Cov}(X_2, X_1) & \text{Cov}(X_2, X_2) & \dots & \text{Cov}(X_2, X_p) \\ \vdots & \vdots & \ddots & \vdots \\ \text{Cov}(X_p, X_1) & \text{Cov}(X_p, X_2) & \dots & \text{Cov}(X_p, X_p) \end{bmatrix}

⑥样本去中心化协方差:\boldsymbol{\Sigma} = \frac{1}{n} \mathbf{X}^T \mathbf{X}

⑦特征向量:Av=\lambda v

⑧特征值:令 |C-λE| =0

⑨特征向量标准化(先求特征向量的长度):\mathbf{v}_{\text{std}} = \frac{\mathbf{v}}{||\mathbf{v}||}

5、实例分析

给出平面直角坐标系上的五个点:(-1,-2),(-1, 0),( 0, 0),( 2, 1),( 0, 1),

所以矩阵为:x= \begin{pmatrix} -1 & -1 & 0 & 2 & 0 \\ -2 & 0 & 0 & 1 & 1 \end{pmatrix}

描点画图:

下面使用主成分分析方法进行降维,结果如下:

下面是主成分分析的实现过程:

①去中心化。由于这组数据的两个指标的平均值都为0,所以该样本就是去中心化样本。

所以该样本为:

X=x= \begin{pmatrix} -1 & -1 & 0 & 2 & 0 \\ -2 & 0 & 0 & 1 & 1 \end{pmatrix}

②计算标准差。这里的特征标准差都一致,所以这一步可以不用。

③计算协方差,这里因为数据去中心化了,所以使用的公式为:\boldsymbol{C} = \frac{1}{n} \mathbf{X}^T \mathbf{X} 

(后面细讲这个公式)

协方差计算过程为:

\boldsymbol{C} = \frac{1}{n} \mathbf{X} \mathbf{X}^T=\frac{1}{5}\begin{pmatrix} -1 & -1 & 0 & 2 & 0 \\ -2 & 0 & 0 & 1 & 1 \end{pmatrix} \begin{pmatrix} -1 & -2 \\ -1 & 0 \\ 0 & 0 \\ 2 & 1 \\ 0 & 1 \\ \end{pmatrix} =\begin{pmatrix} \frac{6}{5} & \frac{4}{5} \\ \frac{4}{5} & \frac{6}{5} \\ \end{pmatrix}

④特征值和特征向量:Cv=λv。

计算过程:

\begin{pmatrix} \frac{6}{5} & \frac{4}{5} \\ \frac{4}{5} & \frac{6}{5} \\ \end{pmatrix}\begin{pmatrix} v_1\\ v_2\\ \end{pmatrix}=\lambda\begin{pmatrix} v_1\\ v_2\\ \end{pmatrix}

整理一下,得出:

\begin{array}{l} \left\{\begin{matrix} \frac{6v_1}{5}+\frac{4v_2}{5}=\lambda v_1 \\ \frac{4v_1}{5}+\frac{6v_2}{5}=\lambda v_2 \end{matrix}\right. \end{array}

进行化简,得到:

\begin{array}{l} \left\{\begin{matrix} (\frac{6}{5}-\lambda )v_1+\frac{4v_2}{5}=0 \\ \frac{4v_1}{5}+(\frac{6}{5}-\lambda)v_2=0 \end{matrix}\right. \end{array}

行列式求解:

\begin{vmatrix} \frac{6}{5}-\lambda & \frac{4}{5}\\ \frac{4}{5}& \frac{6}{5}-\lambda \\ \end{vmatrix} =0

因式分解得:

\left(\lambda-\frac{2}{5}\right)\left(\lambda-2\right) =0

解得:λ1=2,λ2=2/5

特征值依次带入行列式的矩阵,乘以对应的特征向量,得:

\begin{pmatrix} \frac{6}{5}-\lambda & \frac{4}{5} \\ \frac{4}{5} & \frac{6}{5}-\lambda \\ \end{pmatrix}\begin{pmatrix} v_{i1}\\ v_{i2}\\ \end{pmatrix}=\begin{pmatrix} 0\\ 0\\ \end{pmatrix}

λ1=2,λ2=2/5依次带入,得到:

\begin{pmatrix} \frac{6}{5}-2 & \frac{4}{5} \\ \frac{4}{5} & \frac{6}{5}-2 \\ \end{pmatrix}\begin{pmatrix} v_{11}\\ v_{12}\\ \end{pmatrix}= \begin{pmatrix} -\frac{4}{5} & \frac{4}{5} \\ \frac{4}{5} & -\frac{4}{5} \\ \end{pmatrix}\begin{pmatrix} v_{11}\\ v_{12}\\ \end{pmatrix}= \begin{pmatrix} 0\\ 0\\ \end{pmatrix}

最终特征向量v1为:C_1\begin{pmatrix} 1 \\ 1 \\ \end{pmatrix}

同理可得最终特征向量v2为:C_2\begin{pmatrix} -1 \\ 1 \\ \end{pmatrix}

其中对应的特征向量分别是一个通解,C1和C2可以取任意实数。那么标准化后的特征向量为:

v1:

\mathbf{v}_{\text{1}} = \frac{\mathbf{v_1}}{||\mathbf{v}||}= \frac{ \begin{pmatrix} 1 \\ 1 \end{pmatrix} }{ \sqrt{1^2+1^2} }=\frac{ \begin{pmatrix} 1 \\ 1 \end{pmatrix} }{ \sqrt{2} }=\begin{pmatrix} \frac{1}{\sqrt{2} } \\ \frac{1}{\sqrt{2} } \end{pmatrix}

v2:

\mathbf{v}_{\text{2}} = \frac{\mathbf{v_1}}{||\mathbf{v}||}= \frac{ \begin{pmatrix} -1 \\ 1 \end{pmatrix} }{ \sqrt{(-1)^2+1^2} }=\frac{ \begin{pmatrix} -1 \\ 1 \end{pmatrix} }{ \sqrt{2} }=\begin{pmatrix} -\frac{1}{\sqrt{2} } \\ \frac{1}{\sqrt{2} } \end{pmatrix}

所以特征矩阵为:

P=\begin{pmatrix} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\ -\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \end{pmatrix}

⑤选取主成分:

取p1和p2:

p_1=\begin{pmatrix} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \end{pmatrix}

p_2=\begin{pmatrix} -\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \end{pmatrix}

最后结果公式为:Y=PX,带入p1,得Y=p1X:

Y=p_1X=\begin{pmatrix} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \end{pmatrix} \begin{pmatrix} -1 & -1 & 0 & 2 & 0 \\ -2 & 0 & 0 & 1 & 1 \end{pmatrix} =\begin{pmatrix} -\frac{3}{\sqrt{2}} & -\frac{1}{\sqrt{2}} & 0 & \frac{3}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \end{pmatrix}

带入p2同理,但是最终主成分分析的结果,应取带入p1为佳,投影到一维坐标之后,矩阵元素点到新坐标原点的距离之和,, 带入p1大于p2。

6、⭐协方差矩阵补充说明

样本去中心化协方差:\boldsymbol{C} = \frac{1}{n} \mathbf{X} \mathbf{X}^T

我们来推导一下协方差矩阵公式\boldsymbol{C} = \frac{1}{n} \mathbf{X} \mathbf{X}^T的原理:

假设我们有一个数据矩阵 X,其中每一行表示一个观测样本,每一列表示一个特征。假设数据已经被中心化,即每个特征的均值为零。

协方差矩阵的元素 Cov(Xi,Xj) 表示随机变量 Xi 和 Xj 之间的协方差。协方差的计算公式为:

\text{Cov}(X, Y) = \frac{1}{n} \sum_{i=1}^{n} (x_i - \bar{x})(y_i - \bar{y})

其中,xki 表示第 k 个样本的第 i 个特征值,xˉi 表示第 i 个特征的均值,n 表示观测样本数。

我们可以把数据矩阵 X 写成如下形式:

X=\begin{pmatrix} a_{11} & a_{12} &\cdots & a_{1p} \\ a_{21} & a_{22} & \cdots & a_{2p} \\ \vdots & \ddots & \vdots & \vdots\\ a_{n1} & a_{n2}&\cdots & a_{np} \end{pmatrix}

其中,每一行对应一个观测样本,每一列对应一个特征。

我们现在考虑协方差矩阵的一个元素Cov(Xi,Xj):

\text{Cov}(X_i, Y_i) = \frac{1}{n} \sum_{k=1}^{n} (x_{ki} - \bar{x_i})(x_{ki} - \bar{x_j})

我们可以把这个元素的计算写成矩阵形式,将每一列表示一个特征向量,得到如下形式:

\text{Cov}(X_i, Y_i) = \frac{1}{n} (X_{i} - \bar{x_i})^T(X_{j} - \bar{x_j})

其中,Xi 是第 i 个特征的列向量,xˉi 是第 i 个特征的均值列向量。

现在我们可以考虑协方差矩阵的计算,可以表示为矩阵乘积的形式:

\boldsymbol{\Sigma}= \frac{1}{n} (X_{} - \bar{x})^T(X_{} - \bar{x})

其中,X 是数据矩阵,xˉ 是均值矩阵,每一列表示对应特征的均值。

将 X 展开成列向量形式,我们可以得到:

\boldsymbol{\Sigma}= \frac{1}{n} X^TX

这就得到了协方差矩阵的计算公式。需要注意的是,这个公式是在数据已经中心化的基础上进行推导的。

在实际应用中,如果数据没有被中心化,还需要额外的操作来考虑均值的影响。

7、LaTex文本

文中所有公式对应的LaTex表达式都放这里了:

4、公式分析
①特征样本均值:\overline{x}= \frac{1}{n}\sum_{i=1}^{n}{x_i}
②特征样本方差:{S}^2= \frac{1}{n-1}\sum_{i=1}^{n}{(x_i-\overline{x})^2}
③特征方差:{S}^2= \frac{1}{n}\sum_{i=1}^{n}{(x_i-\overline{x})^2}
④协方差:\text{Cov}(X, Y) = \frac{1}{n} \sum_{i=1}^{n} (x_i - \bar{x})(y_i - \bar{y})
⑤协方差矩阵:\text{Cov}(X_1,X_2,...X_p) = \begin{bmatrix}
\text{Cov}(X_1, X_1) & \text{Cov}(X_1, X_2) & \dots & \text{Cov}(X_1, X_p) \\
\text{Cov}(X_2, X_1) & \text{Cov}(X_2, X_2) & \dots & \text{Cov}(X_2, X_p) \\
\vdots & \vdots & \ddots & \vdots \\
\text{Cov}(X_p, X_1) & \text{Cov}(X_p, X_2) & \dots & \text{Cov}(X_p, X_p)
\end{bmatrix}
⑥样本去中心化协方差:\boldsymbol{\Sigma} = \frac{1}{n} \mathbf{X}^T \mathbf{X}
⑦特征向量:Av=\lambda v
⑧特征值:令 |C-λE| =0
⑨特征向量标准化(先求特征向量的长度):\mathbf{v}_{\text{std}} = \frac{\mathbf{v}}{||\mathbf{v}||}给出平面直角坐标系上的五个点:(-1,-2),(-1, 0),( 0, 0),( 2, 1),( 0, 1),
所以矩阵为:x=
\begin{pmatrix}  -1 & -1 & 0 & 2 & 0 \\  -2 & 0 & 0 & 1 & 1  
\end{pmatrix} 下面是主成分分析的实现过程:
①去中心化。由于这组数据的两个指标的平均值都为0,所以该样本就是去中心化样本。
所以该样本为:
X=x=
\begin{pmatrix}  -1 & -1 & 0 & 2 & 0 \\  -2 & 0 & 0 & 1 & 1  
\end{pmatrix} 
②计算标准差。这里的特征标准差都一致,所以这一步可以不用。
③计算协方差,这里因为数据去中心化了,所以使用的公式为:\boldsymbol{C} = \frac{1}{n} \mathbf{X}^T \mathbf{X} (后面细讲这个公式)
协方差计算过程为:
\boldsymbol{C} = \frac{1}{n} \mathbf{X} \mathbf{X}^T=\frac{1}{5}\begin{pmatrix}  -1 & -1 & 0 & 2 & 0 \\  -2 & 0 & 0 & 1 & 1  \end{pmatrix} \begin{pmatrix}  -1 & -2 \\  -1 & 0 \\ 0 & 0    \\ 2 & 1 \\ 0 & 1 \\ \end{pmatrix} =\begin{pmatrix}  \frac{6}{5} & \frac{4}{5} \\   \frac{4}{5} & \frac{6}{5} \\ \end{pmatrix}
④特征值和特征向量:Cv=λv。
计算过程:
\begin{pmatrix}  \frac{6}{5} & \frac{4}{5} \\  \frac{4}{5} & \frac{6}{5} \\ 
\end{pmatrix}\begin{pmatrix}  v_1\\  v_2\\ 
\end{pmatrix}=\lambda\begin{pmatrix}  v_1\\  v_2\\ 
\end{pmatrix}
整理一下,得出:
\begin{array}{l} \left\{\begin{matrix} 
\frac{6v_1}{5}+\frac{4v_2}{5}=\lambda v_1 \\
\frac{4v_1}{5}+\frac{6v_2}{5}=\lambda v_2
\end{matrix}\right.    
\end{array} 
进行化简,得到:
\begin{array}{l} \left\{\begin{matrix} 
(\frac{6}{5}-\lambda )v_1+\frac{4v_2}{5}=0 \\
\frac{4v_1}{5}+(\frac{6}{5}-\lambda)v_2=0
\end{matrix}\right.    
\end{array} 
行列式求解:\begin{vmatrix}  \frac{6}{5}-\lambda &  \frac{4}{5}\\  \frac{4}{5}& \frac{6}{5}-\lambda \\  
\end{vmatrix} =0
因式分解得:
\left(\lambda-\frac{2}{5}\right)\left(\lambda-2\right) =0
解得:λ1=2,λ2=2/5
特征值依次带入行列式的矩阵,乘以对应的特征向量,得:
\begin{pmatrix}  \frac{6}{5}-\lambda & \frac{4}{5} \\  \frac{4}{5} & \frac{6}{5}-\lambda \\ 
\end{pmatrix}\begin{pmatrix}  v_{i1}\\  v_{i2}\\ 
\end{pmatrix}=\begin{pmatrix}  0\\  0\\ 
\end{pmatrix}
把λ1=2,λ2=2/5依次带入,得到:
\begin{pmatrix}  \frac{6}{5}-2 & \frac{4}{5} \\  \frac{4}{5} & \frac{6}{5}-2 \\ 
\end{pmatrix}\begin{pmatrix}  v_{11}\\  v_{12}\\ 
\end{pmatrix}=
\begin{pmatrix}  -\frac{4}{5} & \frac{4}{5} \\  \frac{4}{5} & -\frac{4}{5} \\ 
\end{pmatrix}\begin{pmatrix}  v_{11}\\  v_{12}\\ 
\end{pmatrix}=
\begin{pmatrix}  0\\  0\\ 
\end{pmatrix}
最终特征向量v1为:C_1\begin{pmatrix}  1  \\  1 \\ 
\end{pmatrix}
同理可得最终特征向量v2为:C_2\begin{pmatrix}  -1  \\  1 \\ 
\end{pmatrix}
其中对应的特征向量分别是一个通解,C1和C2可以取任意实数。那么标准化后的特征向量为:
v1:
\mathbf{v}_{\text{1}} = \frac{\mathbf{v_1}}{||\mathbf{v}||}=
\frac{
\begin{pmatrix}  1 \\  1  
\end{pmatrix} 
}{
\sqrt{1^2+1^2} 
}=\frac{
\begin{pmatrix}  1 \\  1  
\end{pmatrix} 
}{
\sqrt{2} 
}=\begin{pmatrix}  \frac{1}{\sqrt{2} } \\  \frac{1}{\sqrt{2} }   
\end{pmatrix} 
v2:
\mathbf{v}_{\text{2}} = \frac{\mathbf{v_1}}{||\mathbf{v}||}=
\frac{
\begin{pmatrix}  -1 \\  1  
\end{pmatrix} 
}{
\sqrt{(-1)^2+1^2} 
}=\frac{
\begin{pmatrix}  -1 \\  1  
\end{pmatrix} 
}{
\sqrt{2} 
}=\begin{pmatrix}  -\frac{1}{\sqrt{2} } \\  \frac{1}{\sqrt{2} }   
\end{pmatrix} 
所以特征矩阵为:
P=\begin{pmatrix}  \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\  -\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}  
\end{pmatrix} 
⑤选取主成分:
取p1和p2:
p_1=\begin{pmatrix}  \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}  
\end{pmatrix} 
p_2=\begin{pmatrix}  -\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}  
\end{pmatrix} 
最后结果公式为:Y=PX,带入p1,得Y=p1X:
Y=p_1X=\begin{pmatrix}  \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}  
\end{pmatrix} \begin{pmatrix}  -1 & -1 & 0 & 2 & 0 \\  -2 & 0 & 0 & 1 & 1  
\end{pmatrix} =\begin{pmatrix}  -\frac{3}{\sqrt{2}} & -\frac{1}{\sqrt{2}} & 0 & \frac{3}{\sqrt{2}} & -\frac{1}{\sqrt{2}} 
\end{pmatrix} 
带入p2同理,但是最终主成分分析的结果,应取带入p1为佳,投影到一维坐标之后,矩阵元素点到新坐标原点的距离之和,, 带入p1大于p2。6、⭐协方差矩阵补充说明
样本去中心化协方差:\boldsymbol{C} = \frac{1}{n} \mathbf{X} \mathbf{X}^T
我们来推导一下协方差矩阵公式\boldsymbol{C} = \frac{1}{n} \mathbf{X} \mathbf{X}^T的原理:
假设我们有一个数据矩阵 X,其中每一行表示一个观测样本,每一列表示一个特征。假设数据已经被中心化,即每个特征的均值为零。
协方差矩阵的元素 Cov(Xi,Xj) 表示随机变量 Xi 和 Xj 之间的协方差。协方差的计算公式为:
\text{Cov}(X, Y) = \frac{1}{n} \sum_{i=1}^{n} (x_i - \bar{x})(y_i - \bar{y})
其中,xki 表示第 k 个样本的第 i 个特征值,xˉi 表示第 i 个特征的均值,n 表示观测样本数。
我们可以把数据矩阵 X 写成如下形式:
X=\begin{pmatrix}  a_{11} & a_{12} &\cdots & a_{1p} \\  a_{21} & a_{22} & \cdots & a_{2p} \\\vdots & \ddots & \vdots & \vdots\\  a_{n1} & a_{n2}&\cdots & a_{np}  
\end{pmatrix} 
其中,每一行对应一个观测样本,每一列对应一个特征。
我们现在考虑协方差矩阵的一个元素Cov(Xi,Xj):
\text{Cov}(X_i, Y_i) = \frac{1}{n} \sum_{k=1}^{n} (x_{ki} - \bar{x_i})(x_{ki} - \bar{x_j})
我们可以把这个元素的计算写成矩阵形式,将每一列表示一个特征向量,得到如下形式:
\text{Cov}(X_i, Y_i) = \frac{1}{n}  (X_{i} - \bar{x_i})^T(X_{j} - \bar{x_j})
其中,Xi 是第 i 个特征的列向量,xˉi 是第 i 个特征的均值列向量。
现在我们可以考虑协方差矩阵的计算,可以表示为矩阵乘积的形式:
\boldsymbol{\Sigma}=  \frac{1}{n}  (X_{} - \bar{x})^T(X_{} - \bar{x})
其中,X 是数据矩阵,xˉ 是均值矩阵,每一列表示对应特征的均值。
将 X 展开成列向量形式,我们可以得到:
\boldsymbol{\Sigma}=  \frac{1}{n}  X^TX
这就得到了协方差矩阵的计算公式。需要注意的是,这个公式是在数据已经中心化的基础上进行推导的。
在实际应用中,如果数据没有被中心化,还需要额外的操作来考虑均值的影响。

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

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

相关文章

Android 远程真机调研

背景 现有的安卓测试机器较少,很难满足 SDK 的兼容性测试及线上问题(特殊机型)验证,基于真机成本较高且数量较多的前提下,可以考虑使用云测平台上的机器进行验证,因此需要针对各云测平台进行调研、比较。 …

打造专属照片分享平台:快速上手Piwigo网页搭建

文章目录 通过cpolar分享本地电脑上有趣的照片:部署piwigo网页前言1.Piwigo2. 使用phpstudy网页运行3. 创建网站4. 开始安装Piwogo 总结 🍀小结🍀 🎉博客主页:小智_x0___0x_ 🎉欢迎关注:&#x…

数据可视化和数字孪生相互促进的关系

数据可视化和数字孪生是当今数字化时代中备受关注的两大领域,它们在不同层面和领域为我们提供了深入洞察和智能决策的机会,随着两种技术的不断融合发展,很多人会将他们联系在一起,本文就带大家浅谈一下二者之间相爱相杀的关系。 …

最好的开放式耳机品牌,开放式耳机选购推荐

传统入耳式耳机长时间佩戴会给耳朵增加压力,在封闭状态下,还容易滋生细菌,引发耳部感染、发炎的症状,但开放式耳机就没有这种情况发生,无需入耳设计,佩戴更舒适,音质更真实通透,也不…

Centos7多台服务器免密登录

准备四台服务器: docker0 docker1 docker2 docker3 在docker0服务器上生成公钥和私钥 [rootwww ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory /root/.ssh. Enter passp…

【Leetcode】84.柱状图中最大的矩形(Hard)

一、题目 1、题目描述 给定 n n n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例1: 输入:heights = [2,1,5,6,2,3] 输出:10 解释:最大的矩形为图中红色区域,面积为 10示例2:…

Java开源项目mall学习笔记(1)——项目初始化

一、学习声明与项目介绍 该笔记是记录学习开源项目mall过程的文档笔记,完全原创,转载请声明。同时也对开源项目的作者表示感谢! mall: 🔥 mall项目是一套基于 SpringBoot Vue uni-app 实现的电商系统,包括前台商城项…

【Kafka】2.在SpringBoot中使用官方原生java版Kafka客户端

目 录 1. 新建一个消息生产者2. 新建一个消息消费者3. 测 试 在开始之前,需要先做点准备工作,用 IDEA 新建一个 Maven 项目,取名 kafka-study,然后删掉它的 src 目录,接着在 pom.xml 里面引入下面的依赖。这个项目的作…

NanoPi NEO移植LVGL8.3.5到1.69寸ST7789V屏幕

移植前准备 移植好fbtft屏幕驱动 参考链接:友善之臂NanoPi NEO利用fbtft驱动点亮1.69寸ST7789V2屏幕 获取源码 名称地址描述lvglhttps://github.com/lvgl/lvgl.gitlvgl-8.3.5lv_drivershttps://github.com/lvgl/lv_drivers.gitlv_drivers-6.1.1 创建工程目录 创…

时序预测 | MATLAB实现基于GRU门控循环单元的时间序列预测-递归预测未来(多指标评价)

时序预测 | MATLAB实现基于GRU门控循环单元的时间序列预测-递归预测未来(多指标评价) 目录 时序预测 | MATLAB实现基于GRU门控循环单元的时间序列预测-递归预测未来(多指标评价)预测结果基本介绍程序设计参考资料 预测结果 基本介绍 1.Matlab实现GRU门控循环单元时间序列预测未…

计算机竞赛 python 爬虫与协同过滤的新闻推荐系统

1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 python 爬虫与协同过滤的新闻推荐系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分创新点:4分 该项目较为新颖&…

AUTOSAR NvM协议栈集成方法

一、涉及的模块 Bsw:NvM、MemIf、Fee、Crc Mcal:Fls 其中一些芯片厂商的MCAL也会提供Fee模块,本文选择使用ETAS提供的Fee模块,好处是Fee的Block不需要手动配,在NvM中配好了Block之后,生成Bsw代码的同时会…

山东布谷科技直播软件源码Nginx服务器横向扩展:搭建更稳定的平台服务

在直播软件源码平台中,服务器扮演着重要的角色,关系着视频传输、数据处理、用户管理等工作的顺利完成。随着互联网的迅猛发展,直播行业也随之崛起,全世界的人们都加入到了直播软件源码平台中,用户流量的增加让服务器的…

设计模式之构建器(Builder)C++实现

1、构建器提出 在软件功能开发中,有时面临“一个复杂对象”的创建工作,该对象的每个功能接口由于需求的变化,会使每个功能接口发生变化,但是该对象使用每个功能实现一个接口的流程是稳定的。构建器就是解决该类现象的。构建就是定…

爬虫逆向实战(八)--猿人学第十五题

一、数据接口分析 主页地址:猿人学第十五题 1、抓包 通过抓包可以发现数据接口是api/match/15 2、判断是否有加密参数 请求参数是否加密? 查看“载荷”模块可以发现有一个m加密参数 请求头是否加密? 无响应是否加密? 无cook…

[C++] string类的介绍与构造的模拟实现,进来看吧,里面有空调

文章目录 1、string类的出现1.1 C语言中的字符串 2、标准库中的string类2.1 string类 3、string类的常见接口说明及模拟实现3.1 string的常见构造3.2 string的构造函数3.3 string的拷贝构造3.4 string的赋值构造 4、完整代码 1、string类的出现 1.1 C语言中的字符串 C语言中&…

【数据分析入门】Numpy进阶

目录 一、数据重塑1.1 透视1.2 透视表1.3 堆栈/反堆栈1.3 融合 二、迭代三、高级索引3.1 基础选择3.2 通过isin选择3.3 通过Where选择3.4 通过Query选择3.5 设置/取消索引3.6 重置索引3.6.1 前向填充3.6.2 后向填充 3.7 多重索引 四、重复数据五、数据分组5.1 聚合5.2 转换 六、…

搭建Web服务器并用cpolar发布至公网访问

本地电脑搭建Web服务器并用cpolar发布至公网访问 文章目录 本地电脑搭建Web服务器并用cpolar发布至公网访问前言1. 首先在电脑安装PHPStudy、WordPress、cpolar2. 安装cpolar,进入Web-UI界面3. 安装wordpress4. 进入wordpress网页安装程序5. 利用cpolar建立的内网穿…

FL Studio 21最新for Windows-21.1.0.3267中文解锁版安装激活教程及更新日志

FL Studio 21最新版本for Windows 21.1.0.3267中文解锁版是最新强大的音乐制作工具。它可以与所有类型的音乐一起创作出令人惊叹的音乐。它提供了一个非常简单且用户友好的集成开发环境(IDE)来工作。这个完整的音乐工作站是由比利时公司 Image-Line 开发…

OpenAI全球招外包大军,手把手训练ChatGPT取代码农 ; 码农:我自己「杀」自己

目录 前言 OpenAI招了一千多名外包人员,训练AI学会像人类一样一步步思考。如果ChatGPT「学成归来」,码农恐怕真的危了? 码农真的危了! 当时OpenAI也说,ChatGPT最合适的定位,应该是编码辅助工具。 用Cha…