透彻理解:方差、协方差、相关系数、协方差矩阵及其应用
最近看了几篇跨领域特征对齐方面的经典文献,学者们搞了很多花样,如有的提出一阶统计特征对齐,有的提出二阶统计特征对齐,有的学者提出高阶统计特征对齐。
通俗而言,就是在统计特征层面对跨域特征进行对齐,如对齐一阶矩(均值)、二阶矩(方差)、三阶矩(偏度)。为此,本文系统的梳理了一遍概率与统计相关的知识点。
目录
- 1. 方差
- 总体方差
- 样本方差
- 2. 协方差
- 性质
- 3. 相关系数
- 公式推导
- 性质
- 4. 协方差矩阵
- 公式推导
- 5. 总结
1. 方差
随机变量 X X X与均值 E [ X ] E[X] E[X]的偏离程度可以表示为 ∣ X − E [ X ] ∣ |X-E[X]| ∣X−E[X]∣,为了便于计算考虑 ( X − E [ X ] ) 2 (X-E[X])^2 (X−E[X])2。由于 ( X − E [ X ] ) 2 (X-E[X])^2 (X−E[X])2任是一个随机变量,因此其均值 E [ ( X − E [ X ] ) 2 ] E[(X-E[X])^2] E[(X−E[X])2]可以反映随机变量 X X X的波动程度,记为
V ( X ) = E [ ( X − E [ X ] ) 2 ] V(X)=E[(X-E[X])^2] V(X)=E[(X−E[X])2]
注:本文仅分析离散型随机变量。
总体方差
σ 2 = 1 N ∑ i = 1 N ( x i − μ ) 2 \sigma^2=\frac{1}{N}\sum_{i=1}^{N}(x_i-\mu)^2 σ2=N1i=1∑N(xi−μ)2
式中, σ 2 \sigma^2 σ2表示总体方差, N N N表示总体样本的个数, μ \mu μ表示总体均值。
样本方差
在实际生活中,总体样本是未知的,一般是采用抽样的方法获得部分样本,因为采用无偏估计可以修正样本估计的偏差,计算公式如下:
S 2 = 1 n − 1 ∑ i = 1 n ( x i − x ˉ ) 2 S^2=\frac{1}{n-1}\sum_{i=1}^{n}(x_i-\bar{x})^2 S2=n−11i=1∑n(xi−xˉ)2
式中, S 2 S^2 S2表示样本方差, n n n表示抽样的样本个数(观测样本个数), x ˉ \bar{x} xˉ表示观测的样本均值。
在后续的方差计算中,均是默认采用无偏估计,且在python的一些包中也均采用的是无偏估计。
编程实现:
x = torch.randn(10)mu = torch.mean(x)
var = torch.sum((x-mu)*(x-mu)) / (10-1) # tensor(0.6017)
内置函数torch.var
:
var = torch.var(x) # tensor(0.6017)
2. 协方差
用于描述二维随机变量 ( X , Y ) (X, Y) (X,Y)之间的相互关系,定义为
C o v ( X , Y ) = E [ ( X − μ X ) ( Y − μ Y ) ] Cov(X, Y)=E[(X-\mu_{X})(Y-\mu_{Y})] Cov(X,Y)=E[(X−μX)(Y−μY)]
式中, μ X , μ Y \mu_{X},\mu_{Y} μX,μY分别表示随机变量 X 、 Y X、Y X、Y的期望。
方差用于描述单个随机变量的波动程度,协方差则是度量二维随机变量的相关程度。当 X = Y X=Y X=Y,则协方差就退化为方差,因此可以认为协方差是方差的一个特例。
性质
关于协方差的一些性质均可以由期望 E [ X ] E[X] E[X]和方差 V [ X ] V[X] V[X]的性质推导得来,毕竟协方差也是方差的一种。因此,下面仅列举了协方差的结论,推导省略。
-
C o v ( X , Y ) > 0 Cov(X,Y)>0 Cov(X,Y)>0:随机变量 X X X和 Y Y Y正相关。
-
C o v ( X , Y ) < 0 Cov(X,Y)<0 Cov(X,Y)<0:随机变量 X X X和 Y Y Y负相关。
-
C o v ( X , Y ) = 0 Cov(X,Y)=0 Cov(X,Y)=0:随机变量 X X X和 Y Y Y不相关。
-
C o v ( X , Y ) = C o v ( Y , X ) Cov(X,Y)=Cov(Y,X) Cov(X,Y)=Cov(Y,X)
-
C o v ( X , X ) = V ( X ) Cov(X,X)=V(X) Cov(X,X)=V(X)
-
C o v ( a X , b Y ) = a b × C o v ( X , Y ) Cov(aX,bY)=ab \times Cov(X,Y) Cov(aX,bY)=ab×Cov(X,Y)
-
C o v ( X + a , Y + b ) = C o v ( X , Y ) Cov(X+a,Y+b)=Cov(X,Y) Cov(X+a,Y+b)=Cov(X,Y)
-
C o v ( X , Y ) = E [ X Y ] − E [ X ] E [ Y ] Cov(X,Y)=E[XY]-E[X]E[Y] Cov(X,Y)=E[XY]−E[X]E[Y]
编程实现:
x = torch.randn(10)
mu_x = torch.mean(x)
y = torch.randn(10)
mu_y = torch.mean(y)cov_xy = torch.sum((x-mu_x)*(y-mu_y)) / (10-1) # tensor(-0.3363)
内置函数torch.cov
:
xy = torch.stack((x, y)) # size (2, 10)cov_matrix = torch.cov(xy) # size (2, 2)
cov_xy = cov_matrix[0, 1] # tensor(-0.3363)
由于torch.cov
返回的是协方差矩阵,所以对角线上的是方差,非对角线上的是协方差。(见第4节的分析)
3. 相关系数
协方差数值大小并不能反应相互关系的强弱,如 C o v ( X , Y ) Cov(X,Y) Cov(X,Y)和 C o v ( a X , b Y ) Cov(aX,bY) Cov(aX,bY)两者的协方差值相差 a b ab ab倍,但是他们分布趋势几乎一样。因此,无法直接通过协方差值的大小来判断两个随机变量的分布关系。
C o v ( a X , b Y ) = a b × C o v ( X , Y ) Cov(aX,bY)=ab\times Cov(X,Y) Cov(aX,bY)=ab×Cov(X,Y)
相关系数通过对随机变量进行标准化处理,可以消除这一干扰,统一度量范围,记为
ρ X Y = C o v ( X , Y ) σ X σ Y \rho_{XY}=\frac{Cov(X,Y)}{\sigma_X \sigma_Y} ρXY=σXσYCov(X,Y)
式中, ρ X Y \rho_{XY} ρXY记为相关系数, σ X \sigma_X σX表示随机变量 X X X的标准差( σ X = V [ X ] \sigma_X=\sqrt{V[X]} σX=V[X])。
公式推导
记随机变量 X 、 Y X、Y X、Y的期望和标准差分别为 μ X , μ Y , σ X , σ Y \mu_X,\mu_Y,\sigma_X,\sigma_Y μX,μY,σX,σY,标准化处理如下
X ~ = X − μ X σ X , Y ~ = Y − μ Y σ Y \widetilde{X}=\frac{X-\mu_X}{\sigma_X},\ \widetilde{Y}=\frac{Y-\mu_Y}{\sigma_Y} X =σXX−μX, Y =σYY−μY
所以归一化后的随机变量 X ~ 、 Y ~ \tilde{X}、\tilde{Y} X~、Y~协方差为
C o v ( X ~ , Y ~ ) = C o v ( X − μ X σ X , Y − μ Y σ Y ) = C o v ( X − μ X , Y − μ Y ) σ X σ Y = C o v ( X , Y ) σ X σ Y = ρ X Y \begin{align*} Cov(\tilde{X},\tilde{Y}) &= Cov(\frac{X-\mu_X}{\sigma_X},\frac{Y-\mu_Y}{\sigma_Y}) \\ &= \frac{Cov(X-\mu_X, Y-\mu_Y)}{\sigma_X \sigma_Y} \\ &= \frac{Cov(X, Y)}{\sigma_X \sigma_Y} \\ &= \rho_{XY} \end{align*} Cov(X~,Y~)=Cov(σXX−μX,σYY−μY)=σXσYCov(X−μX,Y−μY)=σXσYCov(X,Y)=ρXY
所以,相关系数可以看做是标准化变量的协方差。
性质
1)不受缩放比例的影响。
设 Z = a X , W = b Y Z=aX,W=bY Z=aX,W=bY,则随机变量 Z , W Z,W Z,W的相关系数为
ρ Z W = C o v ( Z , W ) σ Z σ W = C o v ( a X , b Y ) V [ a X ] V [ b Y ] = a b C o v ( X , Y ) a 2 V [ X ] b 2 V [ Y ] = ρ X Y \begin{align*} \rho_{ZW} &= \frac{Cov(Z,W)}{\sigma_Z \sigma_W} \\ &= \frac{Cov(aX,bY)}{\sqrt{V[aX]} \sqrt{V[bY]}} \\ &= \frac{abCov(X,Y)}{\sqrt{a^2V[X]} \sqrt{b^2V[Y]}} \\ &= \rho_{XY} \end{align*} ρZW=σZσWCov(Z,W)=V[aX]V[bY]Cov(aX,bY)=a2V[X]b2V[Y]abCov(X,Y)=ρXY
2)不受随机变量加减的影响。
设 Z = X + a , W = Y + b Z=X+a,W=Y+b Z=X+a,W=Y+b,则随机变量 Z , W Z,W Z,W的相关系数为
ρ Z W = C o v ( Z , W ) σ Z σ W = C o v ( X + a , Y + b ) V [ X + a ] V [ Y + b ] = C o v ( X , Y ) V [ X ] V [ Y ] = ρ X Y \begin{align*} \rho_{ZW} &= \frac{Cov(Z,W)}{\sigma_Z \sigma_W} \\ &= \frac{Cov(X+a,Y+b)}{\sqrt{V[X+a]} \sqrt{V[Y+b]}} \\ &= \frac{Cov(X,Y)}{\sqrt{V[X]} \sqrt{V[Y]}} \\ &= \rho_{XY} \end{align*} ρZW=σZσWCov(Z,W)=V[X+a]V[Y+b]Cov(X+a,Y+b)=V[X]V[Y]Cov(X,Y)=ρXY
编程实现:
x = torch.randn(10)
mu_x = torch.mean(x)y = torch.randn(10)
mu_y = torch.mean(y)cov_xy = torch.sum((x-mu_x)*(y-mu_y)) / (10-1) # xy协方差
x_std = torch.std(x) # x的标准差
y_std = torch.std(y) # y的标准差r_xy = cov_xy / (x_std * y_std) # tensor(0.1423)
内置函数torch.corrcoef
:
xy = torch.stack((x, y)) # size (2, 10)
r_matrix = torch.corrcoef(xy) # size (2,2), 对角线值全为1
r_xy = r_matrix[0,1] # tensor(0.1423)
4. 协方差矩阵
协方差是计算两个随机变量的相关性,协方差矩阵是计算三个及以上随机变量的相关性。假设有三个随机变量 X 1 , X 2 , X 3 X_1,X_2,X_3 X1,X2,X3,则对应的协方差矩阵一览表为
随机变量 | X 1 X_1 X1 | X 2 X_2 X2 | X 3 X_3 X3 |
---|---|---|---|
X 1 X_1 X1 | C o v ( X 1 , X 1 ) Cov(X_1,X_1) Cov(X1,X1) | C o v ( X 1 , X 2 ) Cov(X_1,X_2) Cov(X1,X2) | C o v ( X 1 , X 3 ) Cov(X_1,X_3) Cov(X1,X3) |
X 2 X_2 X2 | C o v ( X 2 , X 1 ) Cov(X_2,X_1) Cov(X2,X1) | C o v ( X 2 , X 2 ) Cov(X_2,X_2) Cov(X2,X2) | C o v ( X 2 , X 3 ) Cov(X_2,X_3) Cov(X2,X3) |
X 3 X_3 X3 | C o v ( X 3 , X 1 ) Cov(X_3,X_1) Cov(X3,X1) | C o v ( X 3 , X 2 ) Cov(X_3,X_2) Cov(X3,X2) | C o v ( X 3 , X 3 ) Cov(X_3,X_3) Cov(X3,X3) |
将上述一览表写成协方差矩阵的形式
Σ = [ V ( X 1 ) C o v ( X 1 , X 2 ) C o v ( X 1 , X 3 ) C o v ( X 2 , X 1 ) V ( X 2 ) C o v ( X 2 , X 3 ) C o v ( X 3 , X 1 ) C o v ( X 3 , X 2 ) V ( X 3 ) ] 3 × 3 \Sigma= \begin{bmatrix} V(X_1) & Cov(X_1,X_2) & Cov(X_1, X_3) \\ Cov(X_2, X_1) & V(X_2) & Cov(X_2, X_3) \\ Cov(X_3, X_1) & Cov(X_3,X_2) & V(X_3) \end{bmatrix} _{3\times 3} Σ= V(X1)Cov(X2,X1)Cov(X3,X1)Cov(X1,X2)V(X2)Cov(X3,X2)Cov(X1,X3)Cov(X2,X3)V(X3) 3×3
式中, Σ \Sigma Σ表示协方差矩阵, V ( X ) V(X) V(X)表示随机变量的方差, V ( X ) = C o v ( X , X ) V(X)=Cov(X,X) V(X)=Cov(X,X)。
一般而言, σ 2 \sigma^2 σ2表示方差,大写的*\Sigma*表示协方差矩阵 Σ \Sigma Σ。
为了提高代码的效率,一般采用向量化编程思想计算多个随机变量的协方差矩阵 Σ \Sigma Σ
Σ = E [ ( X − μ ) ( X − μ ) T ] \Sigma = E[(\bold{X}-\boldsymbol{\mu})(\bold{X}-\boldsymbol{\mu})^T] Σ=E[(X−μ)(X−μ)T]
式中, X ∈ R d × n , μ ∈ R d × 1 , Σ ∈ R d × d \bold{X}\in \R^{d\times n},\boldsymbol{\mu}\in \R^{d\times 1}, \Sigma \in \R^{d\times d} X∈Rd×n,μ∈Rd×1,Σ∈Rd×d, n n n是观测样本的个数, d d d是随机变量的个数, μ \boldsymbol{\mu} μ是均值向量,包含了每个随机变量对应的均值。
补充理解:
- X = [ X 1 、 X 2 、 X 3 ] \bold{X}=[X_1、X_2、X_3] X=[X1、X2、X3]包含了三个随机变量。
- 可以从随机变量 X 1 X_1 X1中取值,这些取出来的值称为观测样本,因为离散型随机变量的取值为有限个值(或可列个值),如从中取出 n n n个观测样本 { x 1 , x 2 , . . . , x n } \{x_1,x_2,...,x_n\} {x1,x2,...,xn}。
- 对应于我们的训练样本则 n n n是训练样本个数, d d d是每个样本对应的特征维数。
公式推导
下面以随机变量个数为3,推导上述公式成立
X = [ X 1 , X 2 , X 3 ] T μ = E [ X ] = [ μ 1 , μ 2 , μ 3 ] T X − μ = [ X 1 − μ 1 , X 2 − μ 2 , X 3 − μ 3 ] T \begin{align*} \bold{X} &= [X_1, X_2, X_3]^T \\ \boldsymbol{\mu} &= E[X]=[\mu_1,\mu_2,\mu_3]^T \\ \bold{X} - \boldsymbol{\mu} &= [X_1-\mu_1, X_2-\mu_2, X_3-\mu_3]^T \end{align*} XμX−μ=[X1,X2,X3]T=E[X]=[μ1,μ2,μ3]T=[X1−μ1,X2−μ2,X3−μ3]T
则有
E [ ( X − μ ) ( X − μ ) T ] = E [ ( X 1 − μ 1 , X 2 − μ 2 , X 3 − μ 3 ) T × ( X 1 − μ 1 , X 2 − μ 2 , X 3 − μ 3 ) ] = E [ ( ( X 1 − μ 1 ) 2 ( X 1 − μ 1 ) ( X 2 − μ 2 ) ( X 1 − μ 1 ) ( X 3 − μ 3 ) ( X 2 − μ 2 ) ( X 1 − μ 1 ) ( X 2 − μ 2 ) 2 ( X 2 − μ 2 ) ( X 3 − μ 3 ) ( X 3 − μ 3 ) ( X 1 − μ 1 ) ( X 3 − μ 3 ) ( X 2 − μ 2 ) ( X 3 − μ 3 ) 2 ) ] = ( V ( X 1 ) C o v ( X 1 , X 2 ) C o v ( X 1 , X 3 ) C o v ( X 2 , X 1 ) V ( X 2 ) C o v ( X 2 , X 3 ) C o v ( X 3 , X 1 ) C o v ( X 3 , X 2 ) V ( X 3 ) ) \begin{align*} & E[(\bold{X} - \boldsymbol{\mu} )(\bold{X} - \boldsymbol{\mu} )^T] \\ &= E[(X_1-\mu_1, X_2-\mu_2, X_3-\mu_3)^T \times (X_1-\mu_1, X_2-\mu_2, X_3-\mu_3)] \\ &= E \begin{bmatrix} \begin{pmatrix} (X_1-\mu_1)^2 & (X_1-\mu_1)(X_2-\mu_2) & (X_1-\mu_1)(X_3-\mu_3) \\ (X_2-\mu_2)(X_1-\mu_1) & (X_2-\mu_2)^2 & (X_2-\mu_2)(X_3-\mu_3) \\ (X_3-\mu_3)(X_1-\mu_1) & (X_3-\mu_3)(X_2-\mu_2) & (X_3-\mu_3)^2 \end{pmatrix} \end{bmatrix} \\ &= \begin{pmatrix} V(X_1) & Cov(X_1,X_2) & Cov(X_1, X_3) \\ Cov(X_2, X_1) & V(X_2) & Cov(X_2, X_3) \\ Cov(X_3, X_1) & Cov(X_3,X_2) & V(X_3) \end{pmatrix} \end{align*} E[(X−μ)(X−μ)T]=E[(X1−μ1,X2−μ2,X3−μ3)T×(X1−μ1,X2−μ2,X3−μ3)]=E (X1−μ1)2(X2−μ2)(X1−μ1)(X3−μ3)(X1−μ1)(X1−μ1)(X2−μ2)(X2−μ2)2(X3−μ3)(X2−μ2)(X1−μ1)(X3−μ3)(X2−μ2)(X3−μ3)(X3−μ3)2 = V(X1)Cov(X2,X1)Cov(X3,X1)Cov(X1,X2)V(X2)Cov(X3,X2)Cov(X1,X3)Cov(X2,X3)V(X3)
编程实现:
S = torch.randn(5, 32) # 5个样本,每个样本特征维度32
X = S.T
mu = X.mean(1).reshape(-1, 1) # 计算X每行的均值x = (X - mu) @ (X - mu).T
cov_x1 = x / (5-1) #协方差矩阵
内置函数torch.cov
:
cov_x2 = torch.cov(S.T) # 计算协方差矩阵# 验证cov_x1与cov_x2是否相等
diff = (cov_x1 - cov_x2).sum() # diff=0
需要注意的是,torch.cov(input)
的输入input要求大小为 d × n d\times n d×n, n n n代表的是观测样本的个数,也就是训练数据的样本个数; d d d代表的是随机变量的个数,可以理解为样本的特征维数。
所以在输入torch.cov
之前,需要将训练样本 X ∈ R n × d X \in \R^{n\times d} X∈Rn×d进行转置。
5. 总结
-
如果需要评价相关性或相似性,前提是变量之间本身就具有线性关系,否则上述评价方法失效。
-
期望是一阶矩(一阶原点矩),方差(协方差)是二阶矩(二阶中心距)。
-
在深度学习相关的方法中,可能会引入上述相关的统计特征对分布偏差进行约束。
参考:
[1]《概率论与数理统计教程》茆诗松等。
[2] 《程序员的数学2 概率统计》平冈和幸等。
[3] wiki-方差
相关文章:
透彻理解:方差、协方差、相关系数、协方差矩阵及其应用
最近看了几篇跨领域特征对齐方面的经典文献,学者们搞了很多花样,如有的提出一阶统计特征对齐,有的提出二阶统计特征对齐,有的学者提出高阶统计特征对齐。 通俗而言,就是在统计特征层面对跨域特征进行对齐,…...
【SPIE出版,见刊快速,EI检索稳定,浙江水利水电学院主办】2025年物理学与量子计算国际学术会议(ICPQC 2025)
2025年物理学与量子计算国际学术会议(ICPQC 2025)将于2025年4月18-20日在中国杭州举行。本次会议旨在汇聚全球的研究人员、学者和业界专家,共同探讨物理学与量子计算领域的最新进展与前沿挑战。随着量子技术的快速发展,其在信息处…...
jmeter后端监视器的妙用和实现方法
JMeter 的后端监视器(Backend Listener)是一个强大的工具,可用于收集、存储和分析测试过程中的性能指标。它允许将测试数据发送到外部系统(如 InfluxDB、Graphite 等),并借助这些系统的可视化工具ÿ…...
Docker 的安全配置与优化(二)
Docker 安全优化策略 (一)多阶段构建优化镜像大小 多阶段构建是 Docker 17.05 版本引入的强大功能,它允许在一个 Dockerfile 中定义多个构建阶段,每个阶段都可以使用不同的基础镜像和依赖项,最终只将必要的文件和依赖…...
宝塔扩容——阿里云如何操作
一、创建快照 磁盘快照,将数据备份,防止丢失。 1.登录“阿里云”账号 2.点击“控制台”——“云服务器 ECS” 3.点击“基本信息”下,右下角“系统盘” 4.点击“创建快照” 二、磁盘扩容 1.点击“云盘扩容” 2. 选择自己要扩容的大小 …...
vscode settings(一):全局| 用户设置常用的设置项
参考资料 Visual Studio Code权威指南 by 韩骏 一. 全局设置与用户设置 1.1 Vscode支持两种不同范围的设置 用户设置(User Settings):这是一个全局范围的设置,会应用到所有的Visual Studio Code实例中。工作区设置(Workspace Settings):设…...
DeepSeek R1本地+私有云版医疗AI部署开发成功案例技术剖析
1. 引言 1.1 研究背景与意义 随着科技的飞速发展,人工智能(AI)在医疗领域的应用正逐渐成为推动医疗行业变革的重要力量。近年来,医疗 AI 取得了显著的进展,从疾病诊断、药物研发到医疗管理等各个环节,AI 技术都展现出了巨大的潜力。它能够处理和分析海量的医疗数据,为…...
CMOS图像传感器——偏振光图像传感器技术
最近,在索尼官网看到了其提到的偏光图像传感器技术Polarsens,感到好奇,查阅了相关资料,总结如下。。。。 一、偏振光 偏振实际上是光的一种基本属性,表述光电场振动的方向。振动方向和光波前进的方向构成的平面叫振动面。大多数的光源,比如太阳,发出非偏振光,这里我们…...
ROS2 中 TF 变换发布与订阅:实现 base_link 和 test_link 实时可视化显示
视频讲解 ROS2 中 TF 变换发布与订阅:实现 base 安装环境依赖 sudo apt-get install ros-humble-tf2-ros ros-humble-tf2-geometry-msgs ros-humble-tf-transformations 创建一个包名为tf_test_pkg的包 ros2 pkg create --build-type ament_python tf_test_pkg -…...
SQLMesh 系列教程9- 宏变量及内置宏变量
SQLMesh 的宏变量是一个强大的工具,能够显著提高 SQL 模型的动态化能力和可维护性。通过合理使用宏变量,可以实现动态时间范围、多环境配置、参数化查询等功能,从而简化数据模型的开发和维护流程。随着数据团队的规模扩大和业务复杂度的增加&…...
逻辑函数的神经网络实现
1.单层感知器实现基本逻辑函数 先给大家抛出一道例题 (一)种类 a.OR函数 目标:当至少一个输入为1时,输出1;否则输出0。 权重设置: 输入权重:所有 wi1(i1,2,...,m)。…...
链表-基础训练(二)链表 day14
两两交换链表中的节点 题目示意: 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 原先我的思路是图像上的思路,但是我感觉还是很复杂…...
使用大语言模型对接OA系统,实现会议室预定功能
随着人工智能技术的不断进步,越来越多的企业开始借助 AI 助手来提高工作效率,尤其是在日常事务的自动化处理中。比如,在许多公司里,会议室的预定是一个常见且频繁的需求,通常需要员工手动检查空闲时间并做出选择。而通…...
hugging face---transformers包
一、前言 不同于计算机视觉的百花齐放,不同网络适用不同情况,NLP则由Transformer一统天下。transformer是2017年提出的一种基于自注意力机制的神经网络架构,transformers库是hugging face社区创造的一个py库,通过该库可以实现统一…...
1. 自定义组件基础
相关资源: 📎day10 图片素材.zip 1. 自定义组件基础 概念:在ArkUI中由框架直接提供的称为系统组件 -> Column,Button等,由开发者定义的称为自定义组件 作用:自定义组件可以对 UI和业务逻辑进行封装&…...
连接Sql Server时报错无法通过使用安全套接字层加密与 SQL Server 建立安全连接
文章目录 一. 前言二. 解决方案 方案1方案2 三. 总结 一. 前言 在《数据库原理》这门课的实验上,需要使用SQL Server,然后使用jdbc连接sql server突然报错为:SQLServerException: “Encrypt”属性设置为“true”且 “trustServerCertific…...
python使用httpx_sse调用sse流式接口对响应格式为application/json的错误信息的处理
目录 问题描述方案 问题描述 调用sse流式接口使用httpx_sse的方式 import httpxfrom httpx_sse import connect_sse# 省略无关代码try:with httpx.Client() as client:with connect_sse(client, "GET", url, paramsparam) as event_source:clear_textbox(response_t…...
R 语言科研绘图 --- 散点图-汇总
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
【语音科学计算器】当前汇率
JSON_MARKER_HORN{“base”:“USD”,“rates”:{“EUR”:0.9758,“JPY”:157.68,“GBP”:0.8190,“CNY”:7.3327,“HKD”:7.7872,“AUD”:1.6260,“CAD”:1.4422,“CHF”:0.9157,“SGD”:1.3714,“KRW”:1473.05,“NZD”:1.7992,“THB”:34.54,“MYR”:4.4930,“PHP”:57.32,“…...
python 进程池的基本使用
Python 进程池:Pool任务调度实现 在现代计算机系统重,处理器核心数量的增加为并行计算提供了强大的硬件基础。Python的 multiprocessing 模块中的进程池(Pool)机制,为开发者提供了 一个高效且易用的并行处理框架。 通…...
初识XML
初识XML <?xml version"1.0" encoding"utf-8" ?> <!--根标签只能有一个--> <!--第一行永远都是 <?xml version"1.0" encoding"utf-8" ?> 前面不允许出现任何其他东西,空格换行等均不行 --> &…...
VisActor/VTable - 快速搭建表格
VTable源于VisActor体系,该体系是从字节跳动大量可视化场景沉淀而来,旨在提供面向叙事的智能可视化解决方案。VisActor包括渲染引擎、可视化语法、数据分析组件、图表组件、表格组件、GIS组件、图可视化组件、智能组件等多个模块,以及周边生态…...
网络安全营运周报
🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 第三章网络安全基础 一、网络安全概述 1、网络安全现状及安全挑战 网络安全范畴极其广泛,可以说是涉及多方面。 因为计算机病毒层出不穷以及黑客的…...
网络运维学习笔记 017 HCIA-Datacom综合实验01
文章目录 综合实验1实验需求总部特性 分支8分支9 配置一、 基本配置(IP二层VLAN链路聚合)ACC_SWSW-S1SW-S2SW-Ser1SW-CoreSW8SW9DHCPISPGW 二、 单臂路由GW 三、 vlanifSW8SW9 四、 OSPFSW8SW9GW 五、 DHCPDHCPGW 六、 NAT缺省路由GW 七、 HTTPGW 综合实…...
【Viewer.js】vue3封装图片查看器
效果图 需求 点击图片放大可关闭放大的 图片 下载 cnpm in viewerjs状态管理方法 stores/imgSeeStore.js import { defineStore } from pinia export const imgSeeStore defineStore(imgSeeStore, {state: () > ({showImgSee: false,ImgUrl: ,}),getters: {},actions: {…...
hot100_108. 将有序数组转换为二叉搜索树
hot100_108. 将有序数组转换为二叉搜索树 思路 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 平衡 二叉搜索树。 示例 1: 输入:nums [-10,-3,0,5,9] 输出:[0,-3,9,-10,null,5] 解释&#…...
给小米/红米手机root(工具基本为官方工具)——KernelSU篇
目录 前言准备工作下载刷机包xiaomirom下载刷机包【适用于MIUI和hyperOS】“hyper更新”微信小程序【只适用于hyperOS】 下载KernelSU刷机所需程序和驱动文件 开始刷机设置手机第一种刷机方式【KMI】推荐提取boot或init_boot分区 第二种刷机方式【GKI】不推荐 结语 前言 刷机需…...
(四)趣学设计模式 之 原型模式!
目录 一、 啥是原型模式?二、 为什么要用原型模式?三、 原型模式怎么实现?四、 原型模式的应用场景五、 原型模式的优点和缺点六、 总结 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式…...
Linux 命令大全完整版(08)
3. 文档编辑命令 joe 功能说明:编辑文本文件。语 法:joe [-asis][-beep][-csmode][-dopadding][-exask][-force][-help][-keepup][-lightoff][-arking][-mid][-nobackups][-nonotice][-nosta][-noxon][-orphan][-backpath<目录>][-columns<…...
【DeepSeek-R1背后的技术】系列十一:RAG原理介绍和本地部署(DeepSeek+RAGFlow构建个人知识库)
【DeepSeek-R1背后的技术】系列博文: 第1篇:混合专家模型(MoE) 第2篇:大模型知识蒸馏(Knowledge Distillation) 第3篇:强化学习(Reinforcement Learning, RL)…...
[python脚本]论文1.(一)CPU/内存数据分析和分组
CPU 收集到的CPU数据,格式如下: 由于这里6个数据为一组来收集latency的数据以及各个分位值的数据,而本质上每一行都是一次完整的测试,因此这里将这个csv文件分为两个文件,第一个是和latency相关的,将6条数…...
git - 从一个远端git库只下载一个文件的方法
文章目录 git - 从一个远端git库只下载一个文件的方法概述笔记写一个bash脚本来自动下载get_github_raw_file_from_url.shreanme_file.shfind_key_value.sh执行命令 END git - 从一个远端git库只下载一个文件的方法 概述 github上有很多大佬上传了电子书库,如果只…...
【C++】list 链表的使用+模拟实现
目录 文章目录 前言 一、list的简介 二、list的使用方法 三、list的模拟实现 1.基本框架: 2.迭代器实现 3.常用接口实现 四、完整代码 总结 前言 本文主要介绍C【STL】容器中的 list,包括接口说明和模拟实现。其中讲解了迭代器功能上的分类&am…...
@Configuration与 @Component的差异
继承关系 Configuration确实可以视为Component的派生注解。从源码层面来看,Configuration本身通过元注解方式标记了Component,这意味着所有被Configuration注解的类本质上也会被Spring识别为组件(Component)。这种设计使得Config…...
c++第一课(基础c)
目录 1.开场白 2.char(字符) 3.字符数组 4.ASCII码 1.开场白 OK,咱们也是亿(不是作者故意的)天没见,话不多说,直接开始! 2.char(字符) 众所不周知&…...
element ui的time时间和table表格
<el-date-picker v-model"value1" align"right" type"date" placeholder"选择日期" value-format"yyyy-MM-dd" change"changeDate"></el-date-picker><el-date-picker v-model"datetime"…...
安装 tensorflow 遇到的问题
Q1: 没发现满足需求的版本 ERROR: Could not find a version that satisfies the requirement keras-nightly~2.5.0.dev (from tensorflow) (from versions: none) ERROR: No matching distribution found for keras-nightly~2.5.0.dev 按照官方文档Installation — TensorFl…...
音视频封装格式:多媒体世界的“容器”与“桥梁”
一、音视频封装格式的核心概念 音视频封装格式(容器)是一种将编码后的视频、音频、字幕等数据按规则整合的文件格式,其本质是多媒体数据容器,核心作用包含: 同步多轨道数据:通过时间戳(PTS/DTS)实现音画同步。组织数据流:统一管理视频流、音频流、字幕流等,并存储元…...
【学习资料】嵌入式人工智能Embedded AI
图片来源: Embedded Artificial Intelligence for Business Purposes | DAC.digital 随着AI在设备端的应用,我们看到越来越多的可穿戴设备出现以及自动驾驶汽车的发展,可以看到嵌入式人工智能是新的发展方向。我为大家介绍嵌入式人工智能的…...
Linux命令大全完整版
1. linux 系统管理命令 adduser 功能说明:新增用户帐号。语 法:adduser补充说明:在 Slackware 中,adduser 指令是个 script 程序,利用交谈的方式取得输入的用户帐号资料,然后再交由真正建立帐号的 use…...
红队内网攻防渗透:内网渗透之内网对抗:实战项目VPC2打靶父子域三层路由某绒免杀下载突破约束委派域控提权
红队内网攻防渗透 实战网络攻防靶场记录1.靶机配置信息讲解2.靶场渗透完整流程2.1 入口点:192.168.139.130(win2008 R2)2.1.1 tomcat后台war包获取权限2.1.2 tomcat使用后门上线CS平台2.1.3 信息收集获取数据库密码2.2 入口点横向:192.168.10.11 (win2012 SQL)2.2.1 SQLs…...
always和assign语法区别
always语句可以带时钟, 也可以不带时钟。 一,assign和always区别 assign 语句使用时不能带时钟。 assign a=1; assign b=2; 在always不带时钟时,逻辑功能和assign完全一致,都是只产生组合逻辑。比较简单的组合逻辑推荐使用assign语句,比较复杂的组合逻辑推荐使用 al…...
深入了解ThreadLocal底层原理-高并发架构
目录 什么是ThreadLocal应用场景需求实现 ThreadLocal核心源码解读Thread 、ThreadLocal、ThreadLocalMap 三者的关系 四大引用-强软弱虚类型ThreadLocal内存泄漏ThreadLocal为什么需要设计成弱引用?并且ThreadLocal用完需要remove呢?原因 什么是ThreadL…...
《AI与NLP:开启元宇宙社交互动新纪元》
在科技飞速发展的当下,元宇宙正从概念逐步走向现实,成为人们关注的焦点。而在元宇宙诸多令人瞩目的特性中,社交互动体验是其核心魅力之一。人工智能(AI)与自然语言处理(NLP)技术的迅猛发展&…...
基于vue和微信小程序的校园自助打印系统(springboot论文源码调试讲解)
第3章 系统设计 3.1系统功能结构设计 本系统的结构分为管理员和用户、店长。本系统的功能结构图如下图3.1所示: 图3.1系统功能结构图 3.2数据库设计 本系统为小程序类的预约平台,所以对信息的安全和稳定要求非常高。为了解决本问题,采用前端…...
电脑开机一段时间就断网,只有重启才能恢复网络(就算插网线都不行),本篇文章直接解决,不要再看别人的垃圾方法啦
下面的是我解决问题的心路历程,不想看的可以直接跳到解决方法上面! 内心思路: w11电脑更新过系统后,我的电脑是常年不关机的,但是一天突然断网,试了很多方法都连不上,重启电脑就会好࿰…...
go-zero学习笔记(五)
api自定义中间件 1. 修改.api文件 syntax"v1"type (GetInfoReq {IDs []string json:"IDs"}GetInfoData {ID string json:"ID"Name string json:"Name"MD5 string json:"md5"Size int64 json:"Size"Up…...
DeepSeek技术全景解析:架构创新与行业差异化竞争力
一、DeepSeek技术体系的核心突破 架构设计:效率与性能的双重革新 Multi-head Latent Attention (MLA):通过将注意力头维度与隐藏层解耦,实现显存占用降低30%的同时支持4096超长上下文窗口。深度优化的MoE架构:结合256个路由专家…...
函数中的形参和实参(吐槽)
def greet_user(user_name):print(f"Hello,{user_name.title()}!")greet_user("zhangsan") 在以上函数中,user_name是形参, 在greet_user("zhangsan")中,值“zhangsan”是实参。这本身没什么大问题。 但是这…...
使用 Promptic 进行对话管理需要具备python技术中的那些编程能力?
使用 Promptic 进行对话管理时,需要掌握一些基础的编程知识和技能,以下是详细说明: 1. Python 编程基础 Promptic 是一个基于 Python 的开发框架,因此需要具备一定的 Python 编程能力,包括: 函数定义与使用:了解如何定义函数、使用参数和返回值。类型注解:熟悉 Python…...