深度学习之贝叶斯分类器

news2024/12/29 11:14:05

贝叶斯分类器

1 图解极大似然估计

极大似然估计的原理,用一张图片来说明,如下图所示:

在这里插入图片描述

​ 例:有两个外形完全相同的箱子,1号箱有99只白球,1只黑球;2号箱有1只白球,99只黑球。在一次实验中,取出的是黑球,请问是从哪个箱子中取出的?

​ 一般的根据经验想法,会猜测这只黑球最像是从2号箱取出,此时描述的“最像”就有“最大似然”的意思,这种想法常称为“最大似然原理”。

2 极大似然估计原理

​ 总结起来,最大似然估计的目的就是:利用已知的样本结果,反推最有可能(最大概率)导致这样结果的参数值。

​ 极大似然估计是建立在极大似然原理的基础上的一个统计方法。极大似然估计提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。通过若干次试验,观察其结果,利用试验结果得到某个参数值能够使样本出现的概率为最大,则称为极大似然估计。

​ 由于样本集中的样本都是独立同分布,可以只考虑一类样本集 D D D,来估计参数向量 θ ⃗ \vec\theta θ 。记已知的样本集为:
D = x ⃗ 1 , x ⃗ 2 , . . . , x ⃗ n D=\vec x_{1},\vec x_{2},...,\vec x_{n} D=x 1,x 2,...,x n
似然函数(likelihood function):联合概率密度函数 p ( D ∣ θ ⃗ ) p(D|\vec\theta ) p(Dθ )称为相对于 x ⃗ 1 , x ⃗ 2 , . . . , x ⃗ n \vec x_{1},\vec x_{2},...,\vec x_{n} x 1,x 2,...,x n θ ⃗ \vec\theta θ 的似然函数。
l ( θ ⃗ ) = p ( D ∣ θ ⃗ ) = p ( x ⃗ 1 , x ⃗ 2 , . . . , x ⃗ n ∣ θ ⃗ ) = ∏ i = 1 n p ( x ⃗ i ∣ θ ⃗ ) l(\vec\theta )=p(D|\vec\theta ) =p(\vec x_{1},\vec x_{2},...,\vec x_{n}|\vec\theta )=\prod_{i=1}^{n}p(\vec x_{i}|\vec \theta ) l(θ )=p(Dθ )=p(x 1,x 2,...,x nθ )=i=1np(x iθ )
如果 θ ⃗ ^ \hat{\vec\theta} θ ^是参数空间中能使似然函数 l ( θ ⃗ ) l(\vec\theta) l(θ )最大的 θ ⃗ \vec\theta θ 值,则 θ ⃗ ^ \hat{\vec\theta} θ ^应该是“最可能”的参数值,那么 θ ⃗ ^ ​ \hat{\vec\theta}​ θ ^就是 θ \theta θ的极大似然估计量。它是样本集的函数,记作:
θ ⃗ ^ = d ( D ) = arg ⁡ max ⁡ θ ⃗ l ( θ ⃗ ) \hat{\vec\theta}=d(D)= \mathop {\arg \max}_{\vec\theta} l(\vec\theta ) θ ^=d(D)=argmaxθ l(θ )
θ ⃗ ^ ( x ⃗ 1 , x ⃗ 2 , . . . , x ⃗ n ) \hat{\vec\theta}(\vec x_{1},\vec x_{2},...,\vec x_{n}) θ ^(x 1,x 2,...,x n)称为极大似然函数估计值。

3 贝叶斯分类器基本原理

​ 贝叶斯决策论通过相关概率已知的情况下利用误判损失来选择最优的类别分类。
假设有 N N N种可能的分类标记,记为 Y = { c 1 , c 2 , . . . , c N } Y=\{c_1,c_2,...,c_N\} Y={c1,c2,...,cN},那对于样本 x \boldsymbol{x} x,它属于哪一类呢?

计算步骤如下:

step 1. 算出样本 x \boldsymbol{x} x属于第i个类的概率,即 P ( c i ∣ x ) ​ P(c_i|x)​ P(cix)

step 2. 通过比较所有的 P ( c i ∣ x ) P(c_i|\boldsymbol{x}) P(cix),得到样本 x \boldsymbol{x} x所属的最佳类别。

step 3. 将类别 c i c_i ci和样本 x \boldsymbol{x} x代入到贝叶斯公式中,得到:
P ( c i ∣ x ) = P ( x ∣ c i ) P ( c i ) P ( x ) . P(c_i|\boldsymbol{x})=\frac{P(\boldsymbol{x}|c_i)P(c_i)}{P(\boldsymbol{x})}. P(cix)=P(x)P(xci)P(ci).
​ 一般来说, P ( c i ) P(c_i) P(ci)为先验概率, P ( x ∣ c i ) P(\boldsymbol{x}|c_i) P(xci)为条件概率, P ( x ) P(\boldsymbol{x}) P(x)是用于归一化的证据因子。对于 P ( c i ) P(c_i) P(ci)可以通过训练样本中类别为 c i c_i ci的样本所占的比例进行估计;此外,由于只需要找出最大的 P ( x ∣ c i ) P(\boldsymbol{x}|c_i) P(xci),因此我们并不需要计算 P ( x ) P(\boldsymbol{x}) P(x)
​ 为了求解条件概率,基于不同假设提出了不同的方法,以下将介绍朴素贝叶斯分类器和半朴素贝叶斯分类器。

4 朴素贝叶斯分类器

​ 假设样本 x \boldsymbol{x} x包含 d d d个属性,即 x = { x 1 , x 2 , . . . , x d } \boldsymbol{x}=\{ x_1,x_2,...,x_d\} x={x1,x2,...,xd}。于是有:
P ( x ∣ c i ) = P ( x 1 , x 2 , ⋯   , x d ∣ c i ) P(\boldsymbol{x}|c_i)=P(x_1,x_2,\cdots,x_d|c_i) P(xci)=P(x1,x2,,xdci)
这个联合概率难以从有限的训练样本中直接估计得到。于是,朴素贝叶斯(Naive Bayesian,简称NB)采用了“属性条件独立性假设”:对已知类别,假设所有属性相互独立。于是有:
P ( x 1 , x 2 , ⋯   , x d ∣ c i ) = ∏ j = 1 d P ( x j ∣ c i ) P(x_1,x_2,\cdots,x_d|c_i)=\prod_{j=1}^d P(x_j|c_i) P(x1,x2,,xdci)=j=1dP(xjci)
这样的话,我们就可以很容易地推出相应的判定准则了:
h n b ( x ) = arg ⁡ max ⁡ c i ∈ Y P ( c i ) ∏ j = 1 d P ( x j ∣ c i ) h_{nb}(\boldsymbol{x})=\mathop{\arg \max}_{c_i\in Y} P(c_i)\prod_{j=1}^dP(x_j|c_i) hnb(x)=argmaxciYP(ci)j=1dP(xjci)
条件概率 P ( x j ∣ c i ) ​ P(x_j|c_i)​ P(xjci)的求解

如果 x j x_j xj是标签属性,那么我们可以通过计数的方法估计 P ( x j ∣ c i ) P(x_j|c_i) P(xjci)
P ( x j ∣ c i ) = P ( x j , c i ) P ( c i ) ≈ # ( x j , c i ) # ( c i ) P(x_j|c_i)=\frac{P(x_j,c_i)}{P(c_i)}\approx\frac{\#(x_j,c_i)}{\#(c_i)} P(xjci)=P(ci)P(xj,ci)#(ci)#(xj,ci)
其中, # ( x j , c i ) \#(x_j,c_i) #(xj,ci)表示在训练样本中 x j x_j xj c i c_{i} ci共同出现的次数。

如果 x j ​ x_j​ xj是数值属性,通常我们假设类别中 c i ​ c_{i}​ ci的所有样本第 j ​ j​ j个属性的值服从正态分布。我们首先估计这个分布的均值 μ ​ μ​ μ和方差 σ ​ σ​ σ,然后计算 x j ​ x_j​ xj在这个分布中的概率密度 P ( x j ∣ c i ) ​ P(x_j|c_i)​ P(xjci)

5 举例理解朴素贝叶斯分类器

使用经典的西瓜训练集如下:

编号色泽根蒂敲声纹理脐部触感密度含糖率好瓜
1青绿蜷缩浊响清晰凹陷硬滑0.6970.460
2乌黑蜷缩沉闷清晰凹陷硬滑0.7740.376
3乌黑蜷缩浊响清晰凹陷硬滑0.6340.264
4青绿蜷缩沉闷清晰凹陷硬滑0.6080.318
5浅白蜷缩浊响清晰凹陷硬滑0.5560.215
6青绿稍蜷浊响清晰稍凹软粘0.4030.237
7乌黑稍蜷浊响稍糊稍凹软粘0.4810.149
8乌黑稍蜷浊响清晰稍凹硬滑0.4370.211
9乌黑稍蜷沉闷稍糊稍凹硬滑0.6660.091
10青绿硬挺清脆清晰平坦软粘0.2430.267
11浅白硬挺清脆模糊平坦硬滑0.2450.057
12浅白蜷缩浊响模糊平坦软粘0.3430.099
13青绿稍蜷浊响稍糊凹陷硬滑0.6390.161
14浅白稍蜷沉闷稍糊凹陷硬滑0.6570.198
15乌黑稍蜷浊响清晰稍凹软粘0.3600.370
16浅白蜷缩浊响模糊平坦硬滑0.5930.042
17青绿蜷缩沉闷稍糊稍凹硬滑0.7190.103

对下面的测试例“测1”进行 分类:

编号色泽根蒂敲声纹理脐部触感密度含糖率好瓜
测1青绿蜷缩浊响清晰凹陷硬滑0.6970.460

首先,估计类先验概率 P ( c j ) P(c_j) P(cj),有
P ( 好瓜 = 是 ) = 8 17 = 0.471 P ( 好瓜 = 否 ) = 9 17 = 0.529 \begin{align} &P(好瓜=是)=\frac{8}{17}=0.471 \newline &P(好瓜=否)=\frac{9}{17}=0.529 \end{align} P(好瓜=)=178=0.471P(好瓜=)=179=0.529
然后,为每个属性估计条件概率(这里,对于连续属性,假定它们服从正态分布)
P 青绿 ∣ 是 = P (色泽 = 青绿 ∣ 好瓜 = 是) = 3 8 = 0.375 P_{青绿|是}=P(色泽=青绿|好瓜=是)=\frac{3}{8}=0.375 P青绿=P(色泽=青绿好瓜=是)=83=0.375

P 青绿 ∣ 否 = P (色泽 = 青绿 ∣ 好瓜 = 否) = 3 9 ≈ 0.333 P_{青绿|否}=P(色泽=青绿|好瓜=否)=\frac{3}{9}\approx0.333 P青绿=P(色泽=青绿好瓜=否)=930.333

P 蜷缩 ∣ 是 = P (根蒂 = 蜷缩 ∣ 好瓜 = 是) = 5 8 = 0.625 P_{蜷缩|是}=P(根蒂=蜷缩|好瓜=是)=\frac{5}{8}=0.625 P蜷缩=P(根蒂=蜷缩好瓜=是)=85=0.625

P 蜷缩 ∣ 否 = P (根蒂 = 蜷缩 ∣ 好瓜 = 否) = 3 9 = 0.333 P_{蜷缩|否}=P(根蒂=蜷缩|好瓜=否)=\frac{3}{9}=0.333 P蜷缩=P(根蒂=蜷缩好瓜=否)=93=0.333

P 浊响 ∣ 是 = P (敲声 = 浊响 ∣ 好瓜 = 是) = 6 8 = 0.750 P_{浊响|是}=P(敲声=浊响|好瓜=是)=\frac{6}{8}=0.750 P浊响=P(敲声=浊响好瓜=是)=86=0.750

P 浊响 ∣ 否 = P (敲声 = 浊响 ∣ 好瓜 = 否) = 4 9 ≈ 0.444 P_{浊响|否}=P(敲声=浊响|好瓜=否)=\frac{4}{9}\approx 0.444 P浊响=P(敲声=浊响好瓜=否)=940.444

P 清晰 ∣ 是 = P (纹理 = 清晰 ∣ 好瓜 = 是) = 7 8 = 0.875 P_{清晰|是}=P(纹理=清晰|好瓜=是)=\frac{7}{8}= 0.875 P清晰=P(纹理=清晰好瓜=是)=87=0.875

P 清晰 ∣ 否 = P (纹理 = 清晰 ∣ 好瓜 = 否) = 2 9 ≈ 0.222 P_{清晰|否}=P(纹理=清晰|好瓜=否)=\frac{2}{9}\approx 0.222 P清晰=P(纹理=清晰好瓜=否)=920.222

P 凹陷 ∣ 是 = P (脐部 = 凹陷 ∣ 好瓜 = 是) = 6 8 = 0.750 P_{凹陷|是}=P(脐部=凹陷|好瓜=是)=\frac{6}{8}= 0.750 P凹陷=P(脐部=凹陷好瓜=是)=86=0.750

P 凹陷 ∣ 否 = P (脐部 = 凹陷 ∣ 好瓜 = 否) = 2 9 ≈ 0.222 P_{凹陷|否}=P(脐部=凹陷|好瓜=否)=\frac{2}{9} \approx 0.222 P凹陷=P(脐部=凹陷好瓜=否)=920.222

P 硬滑 ∣ 是 = P (触感 = 硬滑 ∣ 好瓜 = 是) = 6 8 = 0.750 P_{硬滑|是}=P(触感=硬滑|好瓜=是)=\frac{6}{8}= 0.750 P硬滑=P(触感=硬滑好瓜=是)=86=0.750

P 硬滑 ∣ 否 = P (触感 = 硬滑 ∣ 好瓜 = 否) = 6 9 ≈ 0.667 P_{硬滑|否}=P(触感=硬滑|好瓜=否)=\frac{6}{9} \approx 0.667 P硬滑=P(触感=硬滑好瓜=否)=960.667

ρ 密度: 0.697 ∣ 是 = ρ (密度 = 0.697 ∣ 好瓜 = 是) = 1 2 π × 0.129 e x p ( − ( 0.697 − 0.574 ) 2 2 × 0.12 9 2 ) ≈ 1.959 \begin{aligned} \rho_{密度:0.697|是}&=\rho(密度=0.697|好瓜=是)\\&=\frac{1}{\sqrt{2 \pi}\times0.129}exp\left( -\frac{(0.697-0.574)^2}{2\times0.129^2}\right) \approx 1.959 \end{aligned} ρ密度:0.697∣=ρ(密度=0.697∣好瓜=是)=2π ×0.1291exp(2×0.1292(0.6970.574)2)1.959

ρ 密度: 0.697 ∣ 否 = ρ (密度 = 0.697 ∣ 好瓜 = 否) = 1 2 π × 0.195 e x p ( − ( 0.697 − 0.496 ) 2 2 × 0.19 5 2 ) ≈ 1.203 \begin{aligned} \rho_{密度:0.697|否}&=\rho(密度=0.697|好瓜=否)\\&=\frac{1}{\sqrt{2 \pi}\times0.195}exp\left( -\frac{(0.697-0.496)^2}{2\times0.195^2}\right) \approx 1.203 \end{aligned} ρ密度:0.697∣=ρ(密度=0.697∣好瓜=否)=2π ×0.1951exp(2×0.1952(0.6970.496)2)1.203

ρ 含糖: 0.460 ∣ 是 = ρ (密度 = 0.460 ∣ 好瓜 = 是) = 1 2 π × 0.101 e x p ( − ( 0.460 − 0.279 ) 2 2 × 0.10 1 2 ) ≈ 0.788 \begin{aligned} \rho_{含糖:0.460|是}&=\rho(密度=0.460|好瓜=是)\\&=\frac{1}{\sqrt{2 \pi}\times0.101}exp\left( -\frac{(0.460-0.279)^2}{2\times0.101^2}\right) \approx 0.788 \end{aligned} ρ含糖:0.460∣=ρ(密度=0.460∣好瓜=是)=2π ×0.1011exp(2×0.1012(0.4600.279)2)0.788

ρ 含糖: 0.460 ∣ 否 = ρ (密度 = 0.460 ∣ 好瓜 = 是) = 1 2 π × 0.108 e x p ( − ( 0.460 − 0.154 ) 2 2 × 0.10 8 2 ) ≈ 0.066 \begin{aligned} \rho_{含糖:0.460|否}&=\rho(密度=0.460|好瓜=是)\\&=\frac{1}{\sqrt{2 \pi}\times0.108}exp\left( -\frac{(0.460-0.154)^2}{2\times0.108^2}\right) \approx 0.066 \end{aligned} ρ含糖:0.460∣=ρ(密度=0.460∣好瓜=是)=2π ×0.1081exp(2×0.1082(0.4600.154)2)0.066

于是有
P ( 好瓜 = 是 ) × P 青绿 ∣ 是 × P 蜷缩 ∣ 是 × P 浊响 ∣ 是 × P 清晰 ∣ 是 × P 凹陷 ∣ 是 × P 硬滑 ∣ 是 × p 密度: 0.697 ∣ 是 × p 含糖: 0.460 ∣ 是 ≈ 0.063 P ( 好瓜 = 否 ) × P 青绿 ∣ 否 × P 蜷缩 ∣ 否 × P 浊响 ∣ 否 × P 清晰 ∣ 否 × P 凹陷 ∣ 否 × P 硬滑 ∣ 否 × p 密度: 0.697 ∣ 否 × p 含糖: 0.460 ∣ 否 ≈ 6.80 × 1 0 − 5 \begin{align} P(&好瓜=是)\times P_{青绿|是} \times P_{蜷缩|是} \times P_{浊响|是} \times P_{清晰|是} \times P_{凹陷|是}\newline &\times P_{硬滑|是} \times p_{密度:0.697|是} \times p_{含糖:0.460|是} \approx 0.063 \newline\newline P(&好瓜=否)\times P_{青绿|否} \times P_{蜷缩|否} \times P_{浊响|否} \times P_{清晰|否} \times P_{凹陷|否}\newline &\times P_{硬滑|否} \times p_{密度:0.697|否} \times p_{含糖:0.460|否} \approx 6.80\times 10^{-5} \end{align} P(P(好瓜=)×P青绿×P蜷缩×P浊响×P清晰×P凹陷×P硬滑×p密度:0.697∣×p含糖:0.460∣0.063好瓜=)×P青绿×P蜷缩×P浊响×P清晰×P凹陷×P硬滑×p密度:0.697∣×p含糖:0.460∣6.80×105

由于 0.063 > 6.80 × 1 0 − 5 0.063>6.80\times 10^{-5} 0.063>6.80×105,因此,朴素贝叶斯分类器将测试样本“测1”判别为“好瓜”。

6 半朴素贝叶斯分类器

​ 朴素贝叶斯采用了“属性条件独立性假设”,半朴素贝叶斯分类器的基本想法是适当考虑一部分属性间的相互依赖信息。独依赖估计(One-Dependence Estimator,简称ODE)是半朴素贝叶斯分类器最常用的一种策略。顾名思义,独依赖是假设每个属性在类别之外最多依赖一个其他属性,即:
P ( x ∣ c i ) = ∏ j = 1 d P ( x j ∣ c i , p a j ) P(\boldsymbol{x}|c_i)=\prod_{j=1}^d P(x_j|c_i,{\rm pa}_j) P(xci)=j=1dP(xjci,paj)
其中 p a j pa_j paj为属性 x i x_i xi所依赖的属性,成为 x i x_i xi的父属性。假设父属性 p a j pa_j paj已知,那么可以使用下面的公式估计 P ( x j ∣ c i , p a j ) P(x_j|c_i,{\rm pa}_j) P(xjci,paj)
P ( x j ∣ c i , p a j ) = P ( x j , c i , p a j ) P ( c i , p a j ) P(x_j|c_i,{\rm pa}_j)=\frac{P(x_j,c_i,{\rm pa}_j)}{P(c_i,{\rm pa}_j)} P(xjci,paj)=P(ci,paj)P(xj,ci,paj)

有任何其他有关人工智能学习或GPT共享号独享号问题,欢迎私聊咨询

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

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

相关文章

【Spark 实战】基于spark3.4.2+iceberg1.6.1搭建本地调试环境

基于spark3.4.2iceberg1.6.1搭建本地调试环境 文章目录 基于spark3.4.2iceberg1.6.1搭建本地调试环境环境准备使用maven构建sparksql编辑SparkSQL简单任务附录A iceberg术语参考 环境准备 IntelliJ IDEA 2024.1.2 (Ultimate Edition)JDK 1.8Spark 3.4.2Iceberg 1.6.1 使用mave…

C++----类和对象(一)

一.类的定义 1.类定义的格式 • class为定义类的关键字,ST为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省 略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或 者成员函数。 …

NAND Flash虚拟层设计概述

NAND Flash虚拟层的建立需要对NAND Flash虚拟层进行初始化,根据相应的NAND Flash的物理结构参数建立逻辑结构,并建立索引表来管理逻辑虚拟层与物理虚拟层之间的联系;而在NAND Flash虚拟层运行过程中需要对NAND Flash虚拟层进行相应的垃圾回收…

【AI驱动TDSQL-C Serverless数据库技术实战】 AI电商数据分析系统——探索Text2SQL下AI驱动代码进行实际业务

目录 一、Text2SQL简介二、基于TDSQL-C Serverless的Text2SQL实战2.1、程序流程图2.2、实践流程2.2.1、配置TDSQL-C2.2.2、部署LLAMA模型2.2.3、本地依赖安装2.2.4、应用构建 2.3、运行效果 三、Text2SQL下的AI驱动 Text2SQL 是一种将自然语言查询转换为 SQL 查询的技术&#x…

NVIDIA H200 Tensor Core GPU

增强 AI 和 HPC 工作负载。 文章目录 前言一、通过更大、更快的内存实现更高的性能二、通过高性能 LLM三、增强高性能计算四、Reduce Energy and TCO 降低能耗和 TCO五、通过 H200 NVL 为主流企业服务器释放 AI 加速前言 The GPU for Generative AI and HPC 用于生成式 AI 和 …

香港科技大学新作:速度场如何在复杂城市场景规划中大显身手

导读: 本篇文章提出了一种局部地图表示方法(即速度场)来解决无法为所有场景设计通用规划规则的问题。此外,本文开发了一种高效的迭代轨迹优化器,其与速度场无缝兼容,实现了训练和推理过程。实验结果表明&am…

Linux操作系统中Redis

1、什么是Redis Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 可以理解成一个大容量的map。…

《向量数据库指南》——Milvus 和 Fivetran 如何为 AI 构建基础

哈哈,说起 Milvus 和 Fivetran 如何为 AI 构建基础,这可真是个有意思的话题!来,让我这个向量数据库领域的“老司机”给你详细讲解一番,保证让你听得津津有味,还能学到不少干货! Milvus 和 Fivetran:AI 搜索解决方案的黄金搭档 在当今这个数据爆炸的时代,AI 已经成为…

《软件工程概论》作业一:新冠疫情下软件产品设计(小区电梯实体按钮的软件替代方案)

课程说明:《软件工程概论》为浙江科技学院2018级软件工程专业在大二下学期开设的必修课。课程使用《软件工程导论(第6版)》(张海藩等编著,清华大学出版社)作为教材。以《软件设计文档国家标准GBT8567-2006》…

net core mvc 数据绑定 《2》 bind fromquery,FromRoute,fromform等,自定义模型绑定器

mvc core 模型绑定 控制绑定名称 》》》Bind 属性可以用来指定 模型应该 绑定的前缀 public class MyController : Controller {[HttpPost]public ActionResult Create([Bind(Prefix "MyModel")] Ilist<MyModel> model){// 模型绑定将尝试从请求的表单数据中…

Vue2实现主内容滚动到指定位置时,侧边导航栏也跟随选中变化

需求背景&#xff1a; PC端项目需要实现一个有侧边导航栏&#xff0c;可点击跳转至对应内容区域&#xff0c;类似锚点导航&#xff0c; 同时主内容区域上下滚动时&#xff0c;可实现左侧导航栏选中样式能实时跟随变动的效果。 了解了一下&#xff0c;Element Plus 组件库 和 …

从源码中学习动态代理模式

动态代理模式 动态代理是 Java 反射&#xff08;Reflection&#xff09;API 提供的一种强大机制&#xff0c;它允许在运行时创建对象的代理实例&#xff0c;而不需要在编译时静态地创建。 Java 提供了两种主要的方式来实现动态代理&#xff1a; 基于接口的动态代理&#xff1a…

2024/9/29周报

文章目录 摘要Abstract污水处理工艺流程整体介绍粗格栅细格栅曝气沉砂池提升泵房峰谷平策略 初沉池&#xff08;一级处理&#xff09;工作原理运行管理 氧化沟生化池&#xff08;二级处理&#xff09;二沉池工作原理运行参数 高效沉淀池功能与特点工作原理 深度处理&#xff08…

[BUUCTF从零单排] Web方向 03.Web入门篇之sql注入-1(手工注入详解)

这是作者新开的一个专栏《BUUCTF从零单排》&#xff0c;旨在从零学习CTF知识&#xff0c;方便更多初学者了解各种类型的安全题目&#xff0c;后续分享一定程度会对不同类型的题目进行总结&#xff0c;并结合CTF书籍和真实案例实践&#xff0c;希望对您有所帮助。当然&#xff0…

html+css+js实现dialog对话框

实现效果 HTML部分 <span class"text">点击打开 Dialog</span><!-- 警告框 --><div class"alert"><div class"header"><i>X</i> </div><div class"content">确认关闭</di…

Python 实现 YouTube 视频自动上传

文章目录 前言申请 Google API 秘钥启用 API创建项目凭证配置 API下载生成的凭据文件 youtube-upload 工具使用安装配置秘钥使用 其它问题程序尚未完成 Google 验证流程 个人简介 前言 youtube-upload 库 Python 中一个用于实现 YouTube 视频自动上传的实用工具。以下是关于如…

【 微信机器人+ AI 搭建】

摘要&#xff1a; 各种大模型已经出来好久了&#xff0c;各类app也已经玩腻了&#xff0c;接下来&#xff0c;就在考虑&#xff0c;怎么让大模型&#xff0c;利益最大化。 本人没有显著的家世&#xff0c;没有富婆包养&#xff0c;只能自己抽点时间&#xff0c;研究下技术&…

Java使用BeanUtils.copyProperties实现对象的拷贝

1、BeanUtils.copyProperties() 方法的使用 BeanUtils.copyProperties 方法是 Java 中 Spring 框架提供的一个非常实用的工具方法&#xff0c;它用于将一个 JavaBean 对象的属性值拷贝到另一个 JavaBean 对象中。这个方法主要用于简化对象之间的数据转换过程&#xff0c;尤其是…

数学-傅里叶级数的推导

目录&#xff1a; 1、矢量的正交分解 2、信号的正交分解 3、傅里叶级数形式★ 本篇摘录“信号与系统3-傅里叶变换与频域分析”的小部分内容。 1、矢量的正交分解 两矢量V1与V2正交&#xff0c;夹角为90&#xff0c;那么两正交矢量的内积为零&#xff0c;如下图所示。 图4.2…

Excel实现省-市-区/县级联

数据准备 准备省份-城市映射数据&#xff0c;如下&#xff1a; 新建sheet页&#xff0c;命名为&#xff1a;省-市数据源&#xff0c;然后准备数据&#xff0c;如下所示&#xff1a; 准备城市-区|县映射数据&#xff0c;如下&#xff1a; 新建sheet页&#xff0c;命名为&#x…