透彻理解:方差、协方差、相关系数、协方差矩阵及其应用

最近看了几篇跨领域特征对齐方面的经典文献,学者们搞了很多花样,如有的提出一阶统计特征对齐,有的提出二阶统计特征对齐,有的学者提出高阶统计特征对齐。

通俗而言,就是在统计特征层面对跨域特征进行对齐,如对齐一阶矩(均值)、二阶矩(方差)、三阶矩(偏度)。为此,本文系统的梳理了一遍概率与统计相关的知识点。

目录

  • 1. 方差
    • 总体方差
    • 样本方差
  • 2. 协方差
    • 性质
  • 3. 相关系数
    • 公式推导
    • 性质
  • 4. 协方差矩阵
    • 公式推导
  • 5. 总结

1. 方差

随机变量 X X X与均值 E [ X ] E[X] E[X]的偏离程度可以表示为 ∣ X − E [ X ] ∣ |X-E[X]| XE[X],为了便于计算考虑 ( X − E [ X ] ) 2 (X-E[X])^2 (XE[X])2。由于 ( X − E [ X ] ) 2 (X-E[X])^2 (XE[X])2任是一个随机变量,因此其均值 E [ ( X − E [ X ] ) 2 ] E[(X-E[X])^2] E[(XE[X])2]可以反映随机变量 X X X的波动程度,记为
V ( X ) = E [ ( X − E [ X ] ) 2 ] V(X)=E[(X-E[X])^2] V(X)=E[(XE[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=1N(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=n11i=1n(xixˉ)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 XY的期望。

方差用于描述单个随机变量的波动程度,协方差则是度量二维随机变量的相关程度。当 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 XY的期望和标准差分别为 μ 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} XRd×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=[X1X2X3]包含了三个随机变量。
  • 可以从随机变量 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} XRn×d进行转置。

5. 总结

  • 如果需要评价相关性或相似性,前提是变量之间本身就具有线性关系,否则上述评价方法失效。

  • 期望是一阶矩(一阶原点矩),方差(协方差)是二阶矩(二阶中心距)。

  • 在深度学习相关的方法中,可能会引入上述相关的统计特征对分布偏差进行约束。

参考:

[1]《概率论与数理统计教程》茆诗松等。
[2] 《程序员的数学2 概率统计》平冈和幸等。
[3] wiki-方差

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

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

相关文章

Unity基础学习(二)

二、Mono中的重要内容 1、延迟函数 &#xff08;1&#xff09;延迟函数定义 延迟执行的函数&#xff0c;可以设定要延迟执行的函数和具体延迟的时间 &#xff08;2&#xff09;延迟函数的使用 #region 1、延迟函数//函数&#xff1a;Invoke(函数名/字符串&#xff0c;延迟时…

20250212:ZLKMedia 推流

1:资料 快速开始 ZLMediaKit/ZLMediaKit Wiki GitHub GitHub - ZLMediaKit/ZLMediaKit: WebRTC/RTSP/RTMP/HTTP/HLS/HTTP-FLV/WebSocket-FLV/HTTP-TS/HTTP-fMP4/WebSocket-TS/WebSocket-fMP4/GB28181/SRT server and client framework based on C++11 文档里面提供了各个系…

Holoens2开发报错记录02_通过主机获取彩色和深度数据流常见错误

01.E1696 E1696 无法打开源文件 “stdio.h” 解决方法&#xff1a; 更新一下SDK 1&#xff09;打开Visual Studio Installer&#xff0c;点击修改 2&#xff09;安装详细信息中自己系统对应的SDK&#xff0c;点击修改即可 02.WinError 10060 方法来源 解决方法&#xff1a…

【Qt之QQuickWidget】QML嵌入QWidget中

由于我项目开始使用Widgets,换公司后直接使用QML开发&#xff0c;没有了解过如何实现widget到qml过渡&#xff0c;恰逢面试时遇到一家公司希望从widget迁移到qml开发&#xff0c;询问相关实现&#xff0c;一时语塞&#xff0c;很尴尬&#xff0c;粗略研究并总结下。 对qwidget嵌…

从单片机的启动说起一个单片机到点灯发生了什么下——使用GPIO点一个灯

目录 前言 HAL库对GPIO的抽象 核心分析&#xff1a;HAL_GPIO_Init 前言 我们终于到达了熟悉的地方&#xff0c;对GPIO的初始化。经过漫长的铺垫&#xff0c;我们终于历经千辛万苦&#xff0c;来到了这里。关于GPIO的八种模式等更加详细的细节&#xff0c;由于只是点个灯&am…

ESP32S3:解决RWDT无法触发中断问题,二次开发者怎么才能使用内部RTC看门狗中断RWDT呢?

目录 基于ESP32S3:解决RWDT无法触发中断问题引言解决方案1. 查看报错日志2. 分析报错及一步一步找到解决方法3.小结我的源码基于ESP32S3:解决RWDT无法触发中断问题 引言 在嵌入式系统中,RWDT(看门狗定时器)是确保系统稳定性的重要组件。然而,在某些情况下,RWDT可能无法…

对计算机中缓存的理解和使用Redis作为缓存

使用Redis作为缓存缓存例子缓存的引入 Redis缓存的实现 使用Redis作为缓存 缓存 ​什么是缓存&#xff0c;第一次接触这个东西是在考研学习408的时候&#xff0c;计算机组成原理里面学习到Cache缓存&#xff0c;用于降低由于内存和CPU的速度的差异带来的延迟。它是在CPU和内存…

vue3的实用工具库@vueuse/core

1.什么是vueuse/core 是一个基于 ‌Vue Composition API‌ 开发的实用工具库&#xff0c;旨在通过封装高频功能为可复用的组合式函数&#xff08;Composables&#xff09;&#xff0c;简化 Vue 应用的开发流程。 提供 ‌200 开箱即用的函数‌&#xff0c;覆盖状态管理、浏览器…

基于SSM的《计算机网络》题库管理系统(源码+lw+部署文档+讲解),源码可白嫖!

摘 要 《计算机网络》题库管理系统是一种新颖的考试管理模式&#xff0c;因为系统是用Java技术进行开发。系统分为三个用户进行登录并操作&#xff0c;分别是管理员、教师和学生。教师在系统后台新增试题和试卷&#xff0c;学生进行在线考试&#xff0c;还能对考生记录、错题…

C++初阶——简单实现stack和queue

目录 1、Deque(了解) 1.1 起源 1.2 结构 1.3 优缺点 1.4 应用 2、Stack 3、Queue 4、Priority_Queue 注意&#xff1a;stack&#xff0c;queue&#xff0c;priority_queue是容器适配器(container adaptor) &#xff0c;封装一个容器&#xff0c;按照某种规则使用&#…

第2课 树莓派镜像的烧录

树莓派的系统通常是安装在SD卡上的‌。SD卡作为启动设备,负责启动树莓派并加载操作系统。这种设计使得树莓派具有便携性和灵活性,用户可以通过更换SD卡来更换操作系统或恢复出厂设置。 烧录树莓派的镜像即是将树莓派镜像烧录到SD卡上,在此期间会格式化SD卡,如果SD卡…

【Unity】URP管线Shader编程实例详解 (1) : 漩涡效果shader

作者说 本系列教程适用于有编程基础和图形学基础知识的读者.如果对您有所帮助&#xff0c;请点个免费的赞和关注&#xff0c;您的支持就是我更新最大的动力&#xff01;如果你有任何想看的内容欢迎评论区留言&#xff01;本系列教程Github : https://github.com/Sky0Master/Un…

如何安装vm 和centos

安装 VMware Workstation&#xff08;以 Windows 系统为例&#xff09; 1. 下载 VMware Workstation 打开 VMware 官方网站&#xff08;Desktop Hypervisor Solutions | VMware &#xff09;&#xff0c;在页面中选择适合你系统的版本进行下载。如果你是个人非商业使用&#x…

STM32-心知天气项目

一、项目需求 使用 ESP8266 通过 HTTP 获取天气数据&#xff08;心知天气&#xff09;&#xff0c;并显示在 OLED 屏幕上。 按键 1 &#xff1a;循环切换今天 / 明天 / 后天天气数据&#xff1b; 按键 2 &#xff1a;更新天气。 二、项目框图 三、cjson作用 https://gi…

Wireshark简单教程

1.打开Wireshark,点击最上面栏目里面的“捕获”中的“选项” 2.进入网卡选择界面,选择需要捕获的选择&#xff0c;这里我选择WLAN 3.双击捕获选择出现下面界面 4.点击如下图红方框即可停止捕获 5.点击下图放大镜可以进行放大 6.你也可以查询tcp报文如下图

【Http和Https区别】

概念&#xff1a; 一、Http协议 HTTP&#xff08;超文本传输协议&#xff09;是一种用于传输超媒体文档&#xff08;如HTML&#xff09;的应用层协议&#xff0c;主要用于Web浏览器和服务器之间的通信。http也是客户端和服务器之间请求与响应的标准协议&#xff0c;客户端通常…

Unity Shader 学习13:屏幕后处理 - 使用高斯模糊的Bloom辉光效果

目录 一、基本的后处理流程 - 以将画面转化为灰度图为例 1. C#调用shader 2. Shader实现效果 二、Bloom辉光效果 1. 主要变量 2. Shader效果 &#xff08;1&#xff09;提取较亮区域 - pass1 &#xff08;2&#xff09;高斯模糊 - pass2&3 &#xff08;3&#xff…

【R语言】dplyr包经典函数summarise函数

dplyr包经典函数summarise函数&#xff0c;后面改名乘reframe函数了&#xff0c;但是summarise仍然适用 这个函数的返回结果是一个新的数据框&#xff0c;下面讲一下几种常见用法 示例数据为R自带的数据集mtcars 1.不分组 mtcars %>%summarise(mean mean(disp), n n()…

使用DeepSeek/ChatGPT等AI工具辅助编写wireshark过滤器

随着deepseek,chatgpt等大模型的能力越来越强大&#xff0c;本文将介绍借助deepseek&#xff0c;chatgpt等大模型工具&#xff0c;通过编写提示词&#xff0c;辅助生成全面的Wireshark显示过滤器的能力。 每一种协议的字段众多&#xff0c;流量分析的需求多种多样&#xff0c;…

vscode设置自动换行

vscode设置自动换行 方法 方法 点击文件->首选项->设置。搜索word wrap -> 选择 on 。 搜索Word Wrap&#xff0c;并把选项改为on。