当前位置: 首页 > news >正文

机器学习3——参数估计之极大似然估计

参数估计

问题背景:

P ( ω i ∣ x ) = p ( x ∣ ω i ) P ( ω i ) p ( x ) p ( x ) = ∑ j = 1 c p ( x ∣ ω j ) P ( ω j ) \begin{aligned} & P\left(\omega_i \mid \mathbf{x}\right)=\frac{p\left(\mathbf{x} \mid \omega_i\right) P\left(\omega_i\right)}{p(\mathbf{x})} \\ & p(\mathbf{x})=\sum_{j=1}^c p\left(\mathbf{x} \mid \omega_j\right) P\left(\omega_j\right) \end{aligned} P(ωix)=p(x)p(xωi)P(ωi)p(x)=j=1cp(xωj)P(ωj)

  • 说明:要计算后验概率 P ( ω i ∣ x ) P\left(\omega_i \mid \mathbf{x}\right) P(ωix) ,需要知道:
  • p ( x ∣ ω i ) p\left(\mathbf{x} \mid \omega_i\right) p(xωi) :类条件概率密度函数(似然)。
  • P ( ω i ) P\left(\omega_i\right) P(ωi) :类别 ω i \omega_i ωi 的先验概率。

**如何得到这些值?需要从数据中估计。**对于先验概率:

  • 数据集:

    D = { D 1 , D 2 , … , D c } D=\left\{D_1, D_2, \ldots, D_c\right\} D={D1,D2,,Dc}

    D j 包含类别  ω j 的样本。  D_j \text { 包含类别 } \omega_j \text { 的样本。 } Dj 包含类别 ωj 的样本。 
    先验概率:
    P ( ω i ) = ∣ D i ∣ ∑ i = 1 c ∣ D i ∣ P\left(\omega_i\right)=\frac{\left|D_i\right|}{\sum_{i=1}^c\left|D_i\right|} P(ωi)=i=1cDiDi

接下来的问题是如何估计类条件概率密度。本章将讨论的情况是, p ( x ∣ ω j ) p\left(\mathbf{x} \mid \omega_j\right) p(xωj) 具有参数化形式,例如高斯分布:
p ( x ∣ ω j ) ∼ N ( μ j , Σ j ) θ j = ( θ 1 , θ 2 , … , θ m ) T \begin{gathered} p\left(\mathbf{x} \mid \omega_j\right) \sim \mathcal{N}\left(\mu_j, \Sigma_j\right) \\ \theta_j=\left(\theta_1, \theta_2, \ldots, \theta_m\right)^T \end{gathered} p(xωj)N(μj,Σj)θj=(θ1,θ2,,θm)T

  • 如果 x ∈ R d \mathbf{x} \in \mathbb{R}^d xRd ,则 θ j \theta_j θj 包含 d + d ( d + 1 ) 2 d+\frac{d(d+1)}{2} d+2d(d+1) 个自由参数(均值向量和协方差矩阵的元素)。
  • μ j \mu_j μj :均值向量,维度为 d 。  d_{\text {。 }} d 
  • Σ j \Sigma_j Σj :协方差矩阵,对称矩阵,包含 d ( d + 1 ) 2 \frac{d(d+1)}{2} 2d(d+1) 个唯一元素(因为 Σ i j = Σ j i \Sigma_{i j}=\Sigma_{j i} Σij=Σji )。
  • 总参数数量: d d d(均值) + d ( d + 1 ) 2 +\frac{d(d+1)}{2} +2d(d+1)(协方差) = d + d ( d + 1 ) 2 =d+\frac{d(d+1)}{2} =d+2d(d+1)
  • θ j \theta_j θj :包含所有待估计参数的向量,例如均值和协方差的元素。

数据集与符号:

D = { D 1 , D 2 , … , D c } p ( x ∣ ω j ) = p ( x ∣ θ j ) \begin{aligned} & \mathcal{D}=\left\{\mathcal{D}_1, \mathcal{D}_2, \ldots, \mathcal{D}_c\right\} \\ & p\left(\mathbf{x} \mid \omega_j\right)=p\left(\mathbf{x} \mid \theta_j\right) \end{aligned} D={D1,D2,,Dc}p(xωj)=p(xθj)

类条件密度 p ( x ∣ ω j ) p\left(\mathbf{x} \mid \omega_j\right) p(xωj) 被表示为参数 θ j \theta_j θj 的函数,强化了参数化方法。

目标:使用 D j \mathcal{D}_j Dj 估计未知参数向量:
θ j = ( θ 1 , θ 2 , … , θ m ) T \theta_j=\left(\theta_1, \theta_2, \ldots, \theta_m\right)^T θj=(θ1,θ2,,θm)T

  • 两种估计方法:

    • 最大似然估计(MLE):

      • 把参数 θ \theta θ 看作是固定但未知的值。我们观察到了数据,就用它来找出"最有可能"生成这些数据的参数值。即“Estimate parameter values by maximizing the likelihood (probability) of observing the actual examples.”
        "先有参数,再有数据;现在有了数据,反推参数。"

      • 给定训练数据 D = { x 1 , … , x n } \mathcal{D}=\left\{x_1, \ldots, x_n\right\} D={x1,,xn} ,我们假设它们是从分布 p ( x ∣ θ ) p(x \mid \theta) p(xθ) 中独立采样出来的。最大似然的目标是:

        θ ^ M L E = arg ⁡ max ⁡ θ p ( x 1 , … , x n ∣ θ ) = arg ⁡ max ⁡ θ ∏ i = 1 n p ( x i ∣ θ ) \hat{\theta}_{\mathrm{MLE}}=\arg \max _\theta p\left(x_1, \ldots, x_n \mid \theta\right)=\arg \max _\theta \prod_{i=1}^n p\left(x_i \mid \theta\right) θ^MLE=argθmaxp(x1,,xnθ)=argθmaxi=1np(xiθ)
        为了简化计算,我们通常取对数(log-likelihood):
        θ ^ M L E = arg ⁡ max ⁡ θ ∑ i = 1 n log ⁡ p ( x i ∣ θ ) \hat{\theta}_{\mathrm{MLE}}=\arg \max _\theta \sum_{i=1}^n \log p\left(x_i \mid \theta\right) θ^MLE=argθmaxi=1nlogp(xiθ)

    • 贝叶斯估计:

      • 把参数 θ \theta θ 看作随机变量,它本身有个先验分布 p ( θ ) p(\theta) p(θ) 。当我们观察到数据 D \mathcal{D} D 后,用贝叶斯公式将先验更新为后验 p ( θ ∣ D ) p(\theta \mid \mathcal{D}) p(θD)
        "参数不是一个确定值,而是一个不确定的分布。看到数据后,我只是更新了我对它的信念。"

      • 根据贝叶斯公式:

        p ( θ ∣ D ) = p ( D ∣ θ ) ⋅ p ( θ ) p ( D ) p(\theta \mid \mathcal{D})=\frac{p(\mathcal{D} \mid \theta) \cdot p(\theta)}{p(\mathcal{D})} p(θD)=p(D)p(Dθ)p(θ)
        其中:

        • p ( D ∣ θ ) p(\mathcal{D} \mid \theta) p(Dθ) :似然(和MLE一样);
        • p ( θ ) p(\theta) p(θ) :先验;
        • p ( D ) p(\mathcal{D}) p(D) :对所有参数的积分(保证后验是个合法分布);

        有了后验分布 p ( θ ∣ D ) p(\theta \mid \mathcal{D}) p(θD) 后,可以:

        • 求它的最大后验估计(MAP):

        θ ^ M A P = arg ⁡ max ⁡ θ p ( θ ∣ D ) \hat{\theta}_{\mathrm{MAP}}=\arg \max _\theta p(\theta \mid \mathcal{D}) θ^MAP=argθmaxp(θD)

        • 或者使用后验分布的期望作为估计。

最大似然估计

多元高斯分布为例讲解MLE的应用。

假设我们有一个观测数据集:

D = { x 1 , x 2 , … , x n } \mathcal{D}=\left\{\mathbf{x}_1, \mathbf{x}_2, \ldots, \mathbf{x}_n\right\} D={x1,x2,,xn}

这些样本被认为是从某个参数为 θ \theta θ 的概率分布中独立同分布采样得到的。
因为样本独立,整个数据集出现的联合概率是各样本概率的乘积:
p ( D ∣ θ ) = p ( x 1 ∣ θ ) p ( x 2 ∣ θ ) … p ( x n ∣ θ ) ∏ k = 1 n p ( x k ∣ θ ) p(\mathcal{D} \mid \theta)=p\left(\mathbf{x}_1 \mid \theta\right) p\left(\mathbf{x}_2 \mid \theta\right) \ldots p\left(\mathbf{x}_n \mid \theta\right)\prod_{k=1}^n p\left(\mathbf{x}_k \mid \theta\right) p(Dθ)=p(x1θ)p(x2θ)p(xnθ)k=1np(xkθ)

我们把这个函数看作 θ \theta θ 的函数,叫做似然函数,记作:

L ( θ ∣ D ) = ∏ k = 1 n p ( x k ∣ θ ) L(\theta \mid \mathcal{D})=\prod_{k=1}^n p\left(\mathbf{x}_k \mid \theta\right) L(θD)=k=1np(xkθ)
最大似然估计就是选择一个 θ ^ \hat{\theta} θ^ 使得这个似然函数最大化:
θ ^ = arg ⁡ max ⁡ θ L ( θ ∣ D ) \hat{\theta}=\arg \max _\theta L(\theta \mid \mathcal{D}) θ^=argθmaxL(θD)

也就是说,找到让观测数据“最可能”出现的参数值。我们对其取自然对数,得到对数似然函数:

l ( θ ∣ D ) = ln ⁡ L ( θ ∣ D ) = ∑ k = 1 n ln ⁡ p ( x k ∣ θ ) l(\theta \mid \mathcal{D})=\ln L(\theta \mid \mathcal{D})=\sum_{k=1}^n \ln p\left(\mathbf{x}_k \mid \theta\right) l(θD)=lnL(θD)=k=1nlnp(xkθ)
MLE目标转化为:

θ ^ = arg ⁡ max ⁡ θ l ( θ ∣ D ) \hat{\theta}=\arg \max _\theta l(\theta \mid \mathcal{D}) θ^=argθmaxl(θD)

  • 情况 I:协方差 Σ \Sigma Σ 已知,仅估计均值 μ \mu μ

    高斯概率密度函数(PDF):

    对于一个 d d d 维特征向量 x \mathbf{x} x
    p ( x ∣ μ , Σ ) = 1 ( 2 π ) d / 2 ∣ Σ ∣ 1 / 2 exp ⁡ [ − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) ] p(\mathbf{x} \mid \mu, \Sigma) = \frac{1}{(2\pi)^{d/2} |\Sigma|^{1/2}} \exp \left[ -\frac{1}{2} (\mathbf{x} - \mu)^T \Sigma^{-1} (\mathbf{x} - \mu) \right] p(xμ,Σ)=(2π)d/2∣Σ1/21exp[21(xμ)TΣ1(xμ)]

    似然函数(所有样本联合概率)
    L ( μ ∣ D ) = ∏ k = 1 n p ( x k ∣ μ ) L(\mu \mid \mathcal{D}) = \prod_{k=1}^n p(\mathbf{x}_k \mid \mu) L(μD)=k=1np(xkμ)

    代入高斯密度函数后,乘积项包含了指数和常数项。

    对数似然函数:

    取自然对数后得:
    l ( μ ∣ D ) = − ln ⁡ ( 2 π ) n d / 2 − ln ⁡ ∣ Σ ∣ n / 2 − 1 2 ∑ k = 1 n ( x k − μ ) T Σ − 1 ( x k − μ ) l(\mu \mid \mathcal{D}) = -\ln (2\pi)^{nd/2} - \ln |\Sigma|^{n/2} - \frac{1}{2} \sum_{k=1}^n (\mathbf{x}_k - \mu)^T \Sigma^{-1} (\mathbf{x}_k - \mu) l(μD)=ln(2π)nd/2ln∣Σn/221k=1n(xkμ)TΣ1(xkμ)
    前两个是常数项,不影响优化,目标函数实质上是最小化平方误差项。

    MLE求解过程(以 μ \mu μ 为例)

    我们对对数似然函数对 μ \mu μ 求导,并令其为零:
    ∇ μ l ( μ ∣ D ) = ∑ k = 1 n Σ − 1 ( x k − μ ) = 0 \nabla_\mu l(\mu \mid \mathcal{D}) = \sum_{k=1}^n \Sigma^{-1} (\mathbf{x}_k - \mu) = 0 μl(μD)=k=1nΣ1(xkμ)=0
    移项得到:
    ∑ k = 1 n ( x k − μ ) = 0 ⇒ μ = 1 n ∑ k = 1 n x k \sum_{k=1}^n (\mathbf{x}_k - \mu) = 0 \quad \Rightarrow \quad \mu = \frac{1}{n} \sum_{k=1}^n \mathbf{x}_k k=1n(xkμ)=0μ=n1k=1nxk

    结论:

    最大似然估计下,未知均值 μ \mu μ 的估计值就是样本均值(Sample Mean)

  • 情况 II:均值和方差都未知

    我们现在假设数据是从一个一维高斯分布(正态分布)中采样的:
    p ( x ∣ μ , σ 2 ) = 1 2 π σ 2 exp ⁡ ( − ( x − μ ) 2 2 σ 2 ) p(x \mid \mu, \sigma^2) = \frac{1}{\sqrt{2\pi \sigma^2}} \exp\left( -\frac{(x - \mu)^2}{2\sigma^2} \right) p(xμ,σ2)=2πσ2 1exp(2σ2(xμ)2)
    但此时我们不知道这个分布的均值 μ 和方差 σ²,我们要用样本数据 D = { x 1 , x 2 , … , x n } \mathcal{D} = \{x_1, x_2, \dots, x_n\} D={x1,x2,,xn} 来估计这两个参数。

    我们的方法是:对参数 θ = ( μ , σ 2 ) T \theta = (\mu, \sigma^2)^T θ=(μ,σ2)T 使用极大似然估计(MLE)。

    我们有 n 个独立同分布的样本 x 1 , x 2 , … , x n x_1, x_2, \dots, x_n x1,x2,,xn,所以似然函数是:
    L ( θ ∣ D ) = ∏ k = 1 n p ( x k ∣ θ ) L(\theta \mid \mathcal{D}) = \prod_{k=1}^n p(x_k \mid \theta) L(θD)=k=1np(xkθ)
    代入高斯分布的公式,得到:
    L ( θ ∣ D ) = 1 ( 2 π ) n / 2 σ n exp ⁡ ( − 1 2 σ 2 ∑ k = 1 n ( x k − μ ) 2 ) L(\theta \mid \mathcal{D}) = \frac{1}{(2\pi)^{n/2} \sigma^n} \exp\left( -\frac{1}{2\sigma^2} \sum_{k=1}^n (x_k - \mu)^2 \right) L(θD)=(2π)n/2σn1exp(2σ21k=1n(xkμ)2)
    对数似然函数是:
    l ( θ ∣ D ) = − n 2 ln ⁡ ( 2 π ) − n 2 ln ⁡ ( σ 2 ) − 1 2 σ 2 ∑ k = 1 n ( x k − μ ) 2 l(\theta \mid \mathcal{D}) = -\frac{n}{2} \ln(2\pi) - \frac{n}{2} \ln(\sigma^2) - \frac{1}{2\sigma^2} \sum_{k=1}^n (x_k - \mu)^2 l(θD)=2nln(2π)2nln(σ2)2σ21k=1n(xkμ)2
    这里为了后续方便我们记:

    • θ 1 = μ \theta_1 = \mu θ1=μ
    • θ 2 = σ 2 \theta_2 = \sigma^2 θ2=σ2

    写成统一的形式:
    l ( θ ) = − n 2 ln ⁡ ( 2 π ) − n 2 ln ⁡ ( θ 2 ) − 1 2 θ 2 ∑ k = 1 n ( x k − θ 1 ) 2 l(\theta) = -\frac{n}{2} \ln(2\pi) - \frac{n}{2} \ln(\theta_2) - \frac{1}{2\theta_2} \sum_{k=1}^n (x_k - \theta_1)^2 l(θ)=2nln(2π)2nln(θ2)2θ21k=1n(xkθ1)2
    我们对 θ 1 = μ \theta_1 = \mu θ1=μ θ 2 = σ 2 \theta_2 = \sigma^2 θ2=σ2 分别求导:

    θ 1 = μ \theta_1 = \mu θ1=μ 求导:
    ∂ l ∂ θ 1 = 1 θ 2 ∑ k = 1 n ( x k − θ 1 ) = 1 θ 2 ( ∑ k = 1 n x k − n θ 1 ) \frac{\partial l}{\partial \theta_1} = \frac{1}{\theta_2} \sum_{k=1}^n (x_k - \theta_1) = \frac{1}{\theta_2} \left( \sum_{k=1}^n x_k - n\theta_1 \right) θ1l=θ21k=1n(xkθ1)=θ21(k=1nxknθ1)

    令导数为 0:
    ∑ k = 1 n x k = n θ 1 ⇒ θ 1 = 1 n ∑ k = 1 n x k = μ ^ \sum_{k=1}^n x_k = n\theta_1 \Rightarrow \theta_1 = \frac{1}{n} \sum_{k=1}^n x_k = \hat{\mu} k=1nxk=nθ1θ1=n1k=1nxk=μ^
    θ 2 = σ 2 \theta_2 = \sigma^2 θ2=σ2 求导:
    ∂ l ∂ θ 2 = − n 2 θ 2 + 1 2 θ 2 2 ∑ k = 1 n ( x k − θ 1 ) 2 \frac{\partial l}{\partial \theta_2} = -\frac{n}{2\theta_2} + \frac{1}{2\theta_2^2} \sum_{k=1}^n (x_k - \theta_1)^2 θ2l=2θ2n+2θ221k=1n(xkθ1)2

    令导数为 0:
    − n 2 θ 2 + 1 2 θ 2 2 ∑ k = 1 n ( x k − θ 1 ) 2 = 0 -\frac{n}{2\theta_2} + \frac{1}{2\theta_2^2} \sum_{k=1}^n (x_k - \theta_1)^2 = 0 2θ2n+2θ221k=1n(xkθ1)2=0
    结论:极大似然估计值

    • 均值的MLE为样本均值:
      μ ^ = 1 n ∑ k = 1 n x k \hat{\mu} = \frac{1}{n} \sum_{k=1}^n x_k μ^=n1k=1nxk

    • 方差的MLE为样本方差(无偏性需除以 n − 1 n-1 n1,但MLE 是除以 n):
      σ ^ 2 = 1 n ∑ k = 1 n ( x k − μ ^ ) 2 \hat{\sigma}^2 = \frac{1}{n} \sum_{k=1}^n (x_k - \hat{\mu})^2 σ^2=n1k=1n(xkμ^)2

    方差的估计偏差是一个经典的证明。

    MLE 对一维正态分布的方差估计为:
    σ M L 2 = 1 n ∑ i = 1 n ( x i − μ M L ) 2 \sigma^2_{ML} = \frac{1}{n} \sum_{i=1}^n (x_i - \mu_{ML})^2 σML2=n1i=1n(xiμML)2
    将平方项展开:
    = 1 n ∑ i = 1 n ( x i 2 − 2 x i μ M L + μ M L 2 ) = 1 n ∑ i = 1 n x i 2 − 2 μ M L ⋅ 1 n ∑ i = 1 n x i + μ M L 2 = 1 n ∑ i = 1 n x i 2 − μ M L 2 = \frac{1}{n} \sum_{i=1}^n \left( x_i^2 - 2x_i\mu_{ML} + \mu_{ML}^2 \right) = \frac{1}{n} \sum_{i=1}^n x_i^2 - 2\mu_{ML} \cdot \frac{1}{n} \sum_{i=1}^n x_i + \mu_{ML}^2 = \frac{1}{n} \sum_{i=1}^n x_i^2 - \mu_{ML}^2 =n1i=1n(xi22xiμML+μML2)=n1i=1nxi22μMLn1i=1nxi+μML2=n1i=1nxi2μML2
    求期望:
    E [ σ M L 2 ] = 1 n ∑ i = 1 n E [ x i 2 ] − E [ μ M L 2 ] E[\sigma^2_{ML}] = \frac{1}{n} \sum_{i=1}^n E[x_i^2] - E[\mu_{ML}^2] E[σML2]=n1i=1nE[xi2]E[μML2]
    已知:
    E [ x i 2 ] = Var ( x i ) + [ E ( x i ) ] 2 = σ 2 + μ 2 E[x_i^2] = \text{Var}(x_i) + [E(x_i)]^2 = \sigma^2 + \mu^2 E[xi2]=Var(xi)+[E(xi)]2=σ2+μ2
    而样本均值的平方的期望为:
    E [ μ M L 2 ] = Var ( μ M L ) + [ E ( μ M L ) ] 2 = σ 2 n + μ 2 E[\mu_{ML}^2] = \text{Var}(\mu_{ML}) + [E(\mu_{ML})]^2 = \frac{\sigma^2}{n} + \mu^2 E[μML2]=Var(μML)+[E(μML)]2=nσ2+μ2
    代入得:
    E [ σ M L 2 ] = ( σ 2 + μ 2 ) − ( σ 2 n + μ 2 ) = σ 2 − σ 2 n = n − 1 n σ 2 E[\sigma^2_{ML}] = (\sigma^2 + \mu^2) - \left( \frac{\sigma^2}{n} + \mu^2 \right) = \sigma^2 - \frac{\sigma^2}{n} = \frac{n-1}{n} \sigma^2 E[σML2]=(σ2+μ2)(nσ2+μ2)=σ2nσ2=nn1σ2
    结论: 方差的最大似然估计存在偏差,其期望为 n − 1 n σ 2 \frac{n-1}{n} \sigma^2 nn1σ2,因此也是一个有偏估计。类似前页的协方差,需要进行修正才能成为无偏估计。

相关文章:

机器学习3——参数估计之极大似然估计

参数估计 问题背景: P ( ω i ∣ x ) p ( x ∣ ω i ) P ( ω i ) p ( x ) p ( x ) ∑ j 1 c p ( x ∣ ω j ) P ( ω j ) \begin{aligned} & P\left(\omega_i \mid \mathbf{x}\right)\frac{p\left(\mathbf{x} \mid \omega_i\right) P\left(\omega_i\right)…...

利用python实现NBA数据可视化

大家好,今天我们利用python爬取NBA球星每年的比赛数据并进行可视化展示。主要用到三个模块:xpath、matplotlib。其中xpth负责爬取网站上的信息。Matplotlib是Python开发人员常用的Python绘图库,可以用来绘制各种2D图形,具有绘图质…...

杭州西湖断桥不断:3D扫描还原‘残雪‘视觉骗局

“断桥残雪”是西湖十景之一,所谓“视觉骗局”指的是在特定条件下,从远处看断桥仿佛断开的奇妙视觉效果。利用3D扫描技术还原这一效果可按以下步骤进行: 数据采集 3D扫描断桥:使用高精度的3D激光扫描仪对断桥及其周边环境进行全面…...

Dubbo服务调用超时问题解决方案

Dubbo服务调用超时问题解决方案 Dubbo服务调用超时通常由网络延迟、服务端性能瓶颈、配置不当或资源竞争引发。以下解决方案基于根本原因分类,优先采用高可信度实践: 🔍 一、排查问题根源 网络诊断 使用 ping、telnet 检查服务提供者网络连…...

视觉疲劳检测如何优化智能驾驶的险情管理

视觉分析疲劳检测在智能驾驶中的应用研究 一、背景与需求 近年来,智能驾驶领域因疲劳驾驶引发的交通事故频发,如2025年某品牌智能汽车因驾驶员疲劳导致高速追尾事件,暴露了现有技术对复杂场景的适应不足。传统疲劳检测依赖单一生理信号或车…...

C++ 第三阶段 并发与异步 - 第二节:异步任务(std::async)

目录 一、std::async 概述 1. std::async 的定义 二、std::async 的基本用法 1. 基本语法 (1) 函数调用 (2) Lambda 表达式 三、执行策略详解 1. std::launch::async 2. std::launch::deferred 3. 默认策略(std::launch::any) 四、std::futur…...

OpenCV图像添加水印

一、前言 在数字图像处理中,为图片添加水印是一项常见且重要的技术。无论是版权保护、品牌宣传还是防止未经授权的使用,水印都能发挥重要作用。OpenCV作为一款强大的计算机视觉库,提供了丰富的功能来实现各种水印效果。本教程将详细介绍如何…...

Linux信号机制:从入门到精通

嘿,小伙伴们!今天我要和大家聊一个Linux系统中非常有趣又重要的话题——信号机制。别担心,虽然信号听起来有点高深,但我会用最通俗易懂的语言,配合清晰的图表,带你彻底搞懂这个概念! 什么是信号…...

EXCEL数据报表

客单价成交金额*成交客户数 —— 提取年份 YEAR() 视图-窗口-新建窗口,就能将excel的一个子表格单拎出来成为独立窗口,方便对比查看 数据报表的单元格尽量都用公式来填补,链接到源表上去。这样当源表有新数据更新进来后,报表也…...

openGL学习(VAO和VBO)

理论 VBO void prepare() {//创建一个VBO,但是还没有分配显存GLuint vbo 0;GL_CALL( glGenBuffers(1, &vbo));cout << "vbo " << vbo << endl;//销毁一个VBOGL_CALL(glDeleteBuffers(1, &vbo));cout << "delete vbo "…...

【请关注】制造企业机械加工数据脱敏解决方案

制造企业机械加工数据脱敏解决方案 一、方案概述 在制造企业尤其是机械加工领域,数字化转型带来了生产效率的大幅提升,大量生产数据、设备运行数据、供应链数据以及客户订单数据等成为企业发展的关键驱动力。然而,这些数据中包含众多敏感信息,如客户定制产品的设计图纸(…...

2025.6.27总结

最近工作又开始内耗了&#xff0c;一位同事的转岗直接让我破防了&#xff0c;明明他工作干得很不错&#xff0c;会得又多&#xff0c;性格又好&#xff0c;我还经常请教他业务上的问题。我和他的关系并不算太好&#xff0c;但他加入其他部门&#xff0c;竟然让我有些不舍&#…...

Python打卡:Day38

知识点回顾&#xff1a; Dataset类的__getitem__和__len__方法&#xff08;本质是python的特殊方法&#xff09;Dataloader类minist手写数据集的了解 浙大疏锦行...

Ubuntu18.04/Mysql 5.7 建立主备模式Mysql集群

一、数据库的安装 详见https://www.jianshu.com/p/5073177eedf2 本文实验环境为阿里云的两台ubuntu18.04服务器&#xff1a; master ip: 172.26.138.7 slave ip: 172.26.0.209 二、修改Master的配置(# 的行是我后增加的部分)&#xff1a; 编辑 /etc/mysql/mysql.conf.d/mysqld.…...

Linux journal 日志大小限制与管理详解

文章目录 Linux journal 日志大小限制与管理详解journal 日志的默认存储位置journal 日志大小限制配置查看当前日志占用情况手动清理日志文件按大小清理日志按时间清理日志按文件数清理日志 journald 日志机制原理简析&#xff08;适当加点原理&#xff09;日志筛选与导出技巧&…...

Linux基本指令篇 —— tac指令

tac 是 Linux 系统中一个非常实用的文本处理命令&#xff0c;它是 cat 命令的反向操作&#xff08;名称也是 "cat" 的反写&#xff09;。tac 是一个简单但功能强大的工具&#xff0c;特别适合需要反向处理文本数据的场景&#xff1a; 目录 一、基本功能 二、基本语法…...

【Yonghong 企业日常问题08 】永洪BI的Apache Tomcat版本升级指南

文章目录 前言操作步骤登录验证 前言 某公司业务永洪BI系统使用tomcat 9.0.97版本&#xff0c;接到总公司漏洞扫描整改要求需要将tomcat版本升级到9.0.97以上。 目标&#xff1a;tomcat 9.0.97》 9.0.98 1、下载tomcat所需要的版本 地址:https://tomcat.apache.org/download-…...

动手学Python:从零开始构建一个“文字冒险游戏”

动手学Python&#xff1a;从零开始构建一个“文字冒险游戏” 大家好&#xff0c;我是你的技术向导。今天&#xff0c;我们不聊高深的框架&#xff0c;也不谈复杂的算法&#xff0c;我们来做一点“复古”又极具趣味性的事情——用Python亲手打造一个属于自己的文字冒险游戏&…...

【C/C++】C++26新特性前瞻:全面解析未来编程

展望未来&#xff1a;C26 新特性全面解析 随着 C 标准每三年一次的迭代节奏&#xff0c;C26&#xff08;预计于 2026 年底正式发布&#xff09;正在逐步成型。相比 C20 的革命性更新和 C23 的“修补增强”&#xff0c;C26 继续推进现代 C 的理念——更安全、更高效、更模块化&…...

Linux系统日志与守护进程开发实战指南

Linux系统日志与守护进程开发实战指南 系统日志与守护进程 ├── 系统日志syslog │ ├── 日志路径: /var/log/syslog │ └── 核心API │ ├── openlog │ ├── syslog │ └── closelog └── 守护进程daemon└── 创建步骤├── um…...

兰洋科技上合组织论坛发表专题分享,全球液冷布局引领绿色算力未来

2025年6月17-19日&#xff0c;中国—上海合作组织数字技术合作发展论坛在新疆克拉玛依市举办。作为第四次上海合作组织成员国信息通信技术发展部门负责人会议的配套会议&#xff0c;论坛以“数字化转型助力可持续发展&#xff0c;数字包容促进上合共同繁荣”为主题&#xff0c;…...

桌面小屏幕实战课程:DesktopScreen 11 SPI 水墨屏

飞书文档https://x509p6c8to.feishu.cn/docx/doxcnlzpIgj3gosCZufBTCZxlMb SPI说明 SPI是串行外设接口&#xff08;Serial Peripheral Interface&#xff09;的缩写&#xff0c;是一种高速的&#xff0c;全双工&#xff0c;同步的通信总线&#xff0c;并且在芯片的管脚上占用…...

小知识点五、无刷电机闭环控制(电流)

0 前言 该部分只用于自学使用&#xff0c;作为笔记方便后续自查。 资料参考&#xff1a;http://dengfoc.com 硬件&#xff1a;2208云台电机MT6701磁编码器 1 电流控制理论 1.1 待解决的问题 简单回顾一下在之前的学习中&#xff0c;我们通过 U q U_q Uq​和电角度 θ \the…...

Java 编程之备忘录模式

前言 有时候&#xff0c;我们真希望人生能有“CtrlZ”。在日常生活中&#xff0c;我们经常使用“撤销”功能&#xff0c;例如在写 Word、画图、写代码时一不小心操作失误&#xff0c;就希望能回到之前的状态。这种**“状态快照 恢复”**机制&#xff0c;在设计模式中就叫做&a…...

SQL SERVER存储过程

什么是存储过程 SQL 存储过程&#xff08;Stored Procedure&#xff09;是一个在数据库中预编译并存储的一组 SQL 语句。它们可以包含查询、插入、更新、删除等数据库操作&#xff0c;甚至包括控制流语句&#xff08;如条件判断、循环等&#xff09;。存储过程可以通过调用来执…...

Vue样式绑定与条件渲染详

一、Vue样式绑定 在Vue中&#xff0c;我们可以通过多种方式动态地绑定样式&#xff0c;让界面根据数据状态变化而自动更新样式。 1. class样式绑定 (1) 字符串写法 适用场景&#xff1a;样式的类名不确定&#xff0c;需要动态指定 <template><div><!-- 绑定…...

python基于协同过滤的动漫推荐系统

目录 技术栈介绍具体实现截图系统设计研究方法&#xff1a;设计步骤设计流程核心代码部分展示研究方法详细视频演示试验方案论文大纲源码获取/详细视频演示 技术栈介绍 Django-SpringBoot-php-Node.js-flask 本课题的研究方法和研究步骤基本合理&#xff0c;难度适中&#xf…...

光场操控新突破!3D 光学信息处理迎来通用 PSF 工程时代--《自然》子刊:无需复杂算法,这一技术让 3D 光学成像实现 “即拍即得”念日

导语 在光学成像领域&#xff0c;如何突破分辨率与成像速度的瓶颈&#xff0c;一直是科研人员探索的焦点。近日&#xff0c;加州大学洛杉矶分校&#xff08;UCLA&#xff09;的研究团队在《Light: Science & Applications》发表论文&#xff0c;提出了一种通用点扩散函数&a…...

ubuntu20.04如何给appImage创建快捷方式

ubuntu20.04如何给appImage创建快捷方式 1. 确保AppImage是可执行的 chmod x /path/to/your/appimage2. 创建.desktop文件 在~/.local/share/applications/目录下创建一个新的 .desktop 文件&#xff1a; vi ~/.local/share/applications/your-appname.desktop添加以下内容…...

网络安全之SQL RCE漏洞

引言 堡垒机&#xff08;Bastion Host&#xff09;&#xff0c;也称为跳板机或运维安全审计系统&#xff0c;是一种用于管理和控制对内部网络资源访问的安全设备。它的主要作用是作为运维人员访问内部服务器和网络设备的唯一入口&#xff0c;通过集中化的身份认证、权限管理和…...

DeepSeek网页版随机点名器

用DeepSeek帮我们生成了一个基于html5的随机点名器&#xff0c;效果非常棒&#xff0c;如果需要加入名字&#xff0c;请在代码中按照对应的格式添加即可。 提示词prompt 帮我生成一个随机点名的HTML5页面 生成真实一点的名字数据 点击随机按钮开始随机选择 要有闪动的效果 &…...

Elasticsearch索引字段的类型

在 Elasticsearch 中&#xff0c;索引字段的类型&#xff08;即 Mapping 中的字段类型&#xff09;对搜索和存储性能影响很大。下面是各种常用数据类型的用途及推荐使用场景总结&#xff1a; 1. keyword 类型&#xff08;精确匹配&#xff09; 适合数据&#xff1a; 不需要分词…...

大模型在慢性病毒性肝炎预测及诊疗方案制定中的应用研究

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 二、慢性病毒性肝炎概述 2.1 疾病定义与分类 2.2 发病机制与病理特征 2.3 流行病学现状 三、数据收集与预处理 3.1 数据来源 3.2 数据清洗 3.3 特征工程 四、大模型选择与构建 4.1 模型选择依据 4.2 模型…...

DAY 43 复习日

浙大疏锦行https://blog.csdn.net/weixin_45655710 第一步&#xff1a;寻找并准备图像数据集 在Kaggle等平台上&#xff0c;你可以找到大量用于图像分类任务的数据集&#xff0c;例如英特尔图像分类数据集 (Intel Image Classification) 或手写数字识别数据集 (Digit Recogni…...

SQL学习笔记3

SQL常用函数 1、字符串函数 函数调用的语法&#xff1a;select 函数&#xff08;参数); 常用的字符串函数有&#xff1a; 拼接字符串&#xff0c;将几个字符串拼到一起&#xff1a;concat (s1,s2,……); select concat(你好,hello); update mytable set wherefo concat(中…...

JVM调优实战 Day 7:JVM线程分析与死锁排查

【JVM调优实战 Day 7】JVM线程分析与死锁排查 文章标签 jvm调优, 线程分析, 死锁排查, JVM监控, Java性能优化, JVM参数配置 文章简述 在Java应用的高并发场景中&#xff0c;线程管理与死锁问题往往是性能瓶颈的根源。本文作为“JVM调优实战”系列的第7天&#xff0c;深入解析…...

Android-Layout Inspector使用手册

Layout Inspector Android Layout Inspector 是 Android Studio 中用于调试应用布局的工具 启动方法&#xff1a; 通过下载Layout Inspector插件&#xff0c;在 “View - Tool Windows - Layout Inspector” 或 “Tools - Layout Inspector” 启动。 主要界面区域&#xff1a…...

【51单片机5毫秒定时器】2022-6-1

缘由单片机的代码&#xff0c;求大家来帮帮我-编程语言-CSDN问答 #include "REG52.h" unsigned char code smgduan[]{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0,64}; //共阴0~F消隐减号 unsigned char Js0, miao0;//中断…...

Flutter 多平台项目开发指南

Flutter 多平台项目开发指南 本指南将帮助你从 0 到 1 创建并适配一个支持 Android / iOS / Web / Windows / macOS / Linux 的 Flutter 多平台项目。 ✅ 一、创建支持多平台的 Flutter 项目 flutter create my_multi_platform_app cd my_multi_platform_app默认会生成支持以…...

Mac电脑如何搭建基于java后端的开发的各种工具服务

1. 确认Mac的CPU架构 首先&#xff0c;确认您的Mac是使用Intel还是Apple Silicon&#xff08;如M1芯片&#xff09;架构&#xff1a; uname -m如果返回x86_64&#xff0c;表示是Intel架构。如果返回arm64&#xff0c;表示是Apple Silicon架构。 2.安装IDEA Download Intelli…...

深入解析前端 Meta 标签:HTML 的隐形守护者与功能大师

在构建现代网页时&#xff0c;我们常常关注炫目的视觉效果、复杂的交互逻辑或强大的框架&#xff0c;却容易忽略那些深藏于 <head> 之中、看似不起眼的 <meta> 标签。这些标签如同网页的隐形守护者&#xff0c;无声地承担着定义文档元数据、指导浏览器行为、优化搜…...

CRON表达式编辑器与定时任务实现技术文档

1. 前端CRON表达式编辑器组件 CronExpressionEditor.vue组件是系统中用于创建和编辑CRON表达式的核心UI组件&#xff0c;它提供了直观的界面来生成复杂的定时任务表达式。 1.1 组件结构与状态管理 // 核心状态变量 const second ref<string>(0); const minute ref&…...

45. 跳跃游戏 II

给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向后跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i] i j < n 返回到达 nums[n - 1] 的最…...

《解锁AudioSet:开启音频分析的无限可能》

音频新时代的 “密钥”&#xff1a;AudioSet 登场 在科技飞速发展的今天&#xff0c;音频作为信息传播与交互的关键媒介&#xff0c;早已渗透到现代科技的各个角落。从智能手机中的语音助手&#xff0c;让我们通过简单的语音指令就能查询信息、发送消息&#xff0c;到智能家居系…...

环境太多?不好管理怎么办?TakMll 工具帮你快速切换和管理多语言、多版本情况下的版本切换。

本篇文章主要介绍一款环境管理工具&#xff0c;即TakMll&#xff0c;通过简单的入口命令 “tkm” 即可快速的管理多种语言下、多种版本的环境切换&#xff0c;诸如快速切换PHP、同时存在java、mave等不同版本。 作者&#xff1a;任聪聪 日期&#xff1a;2025年6月26日 TakMll 特…...

spring-ai 1.0.0 (1)模型调用能力

听说1.0是一个非常好用的版本&#xff0c;最后还是扛不住听说的压力&#xff0c;为了落实自己悬浮心理&#xff0c;自己还是着手实践一下了。 第一步pom集成&#xff1a; 参考spring-projects/spring-ai | DeepWiki维基以及官方文档入门 &#xff1a;&#xff1a; Spring AI …...

如何在 Manjaro Linux 上启用 AUR 仓库来安装软件包

Manjaro 是基于 Arch 的系统&#xff0c;是了解和学习 Arch Linux 命令的绝佳方式。它自带所有流行的桌面环境界面&#xff0c;无论是 XFCE 还是 Gnome 的爱好者&#xff0c;都可以在 Manjaro 中直接使用。 Manjaro 或 Arch Linux 的默认软件包管理器是 Pacman&#xff0c;我们…...

简单使用python

本文章没有深入探讨python&#xff0c;只说语法格式&#xff0c;合适于有其他编程语言的基础、并想快速使用python的人查看。 一、print() 用于打印信息&#xff0c;括号中可以是数学运算表达式或者字符串&#xff08;或者说是文字&#xff09;。 print(hello!) 1.1、转义字…...

2025服务端java搭建篇:蜻蜓I即时通讯系统私有化部署深度指南-优雅草卓伊凡|麻子|贝贝

2025服务端java搭建篇&#xff1a;蜻蜓I即时通讯系统私有化部署深度指南-优雅草卓伊凡|麻子|贝贝 前言 蜻蜓I即时通讯系统是一款不依赖第三方服务的私有化即时通讯解决方案&#xff0c;本指南将详细介绍如何使用宝塔面板在CentOS系统上完成系统的完整部署。私有化部署意味着您…...

用Streamlit开发第一个Python应用程序

用Streamlit开发第一个Python应用程序 Using Streamlit to Develop the First Application in Python By JacksonML 1.Streamlit简介 Streamlit是个新出世的、功能强大的Python第三方库&#xff0c;将为基于Web的Python应用程序大放异彩。 Streamlit官网主页面如下&#x…...