【简博士统计学习方法】第1章:4. 模型的评估与选择
4. 模型的评估与选择
4.1 训练误差与测试误差
假如存在样本容量为 N N N的训练集,将训练集送入学习系统可以训练学习得到一个模型,我们将这么模型用决策函数的形式表达,也就是 y = f ^ ( x ) y=\hat{f}(x) y=f^(x),关于模型的拟合是否好坏,可以通过训练集计算训练误差进行衡量。而关于模型的预测效果也就是对未知数据预测效果的好坏,可以通过测试集来衡量,我们将测试集里所有的输入都放到预测系统里面,通过训练所得到的模型,就可以计算出一些列的预测值 y ^ i = f ^ ( x i ) \hat{y}_i=\hat{f}(x_i) y^i=f^(xi),这些预测值与真实值的差异就是测试误差,测试误差可以衡量模型它的预测效果。
根据上节课,损失函数符号形式为 L ( Y , f ( X ) ) L(Y,f(X)) L(Y,f(X)).
4.1.1 训练误差
- 学习到的模型: Y = f ^ ( X ) Y=\hat{f}(X) Y=f^(X)
- 训练集(Training Set):
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) ⋯ , ( x N , y N ) } T=\left\{\left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right) \cdots,\left(x_{N}, y_{N}\right)\right\} T={(x1,y1),(x2,y2)⋯,(xN,yN)}
(即有 N N N个样本) - 训练误差(Training Error):
R e m p ( f ^ ) = 1 N ∑ i = 1 N L ( y i , f ^ ( x i ) ) R_{e m p}(\hat{f})=\frac{1}{N} \sum\limits_{i=1}^{N} L\left(y_{i}, \hat{f}\left(x_{i}\right)\right) Remp(f^)=N1i=1∑NL(yi,f^(xi))
计算了每个样本的损失取平均值(经验损失)
4.1.2 测试误差
- 学习到的模型: Y = f ^ ( X ) Y=\hat{f}(X) Y=f^(X);
- 测试集(Test Set):
T ′ = { ( x 1 ′ , y 1 ′ ) , ( x 2 ′ , y 2 ′ ) ⋯ , ( x N ′ , y N ′ ) } T^{\prime}=\left\{\left(x_{1^{\prime}}, y_{1^{\prime}}\right),\left(x_{2^{\prime}}, y_{2^{\prime}}\right) \cdots,\left(x_{N^{\prime}}, y_{N^{\prime}}\right)\right\} T′={(x1′,y1′),(x2′,y2′)⋯,(xN′,yN′)} - 测试误差(Test Error):
e test = 1 N ′ ∑ i ′ = 1 N ′ L ( y i ′ , f ^ ( x i ′ ) ) e_{\text {test }}=\frac{1}{N^{\prime}} \sum\limits_{i^{\prime}=1}^{N^{\prime}} L\left(y_{i^{\prime}}, \hat{f}\left(x_{i^{\prime}}\right)\right) etest =N′1i′=1∑N′L(yi′,f^(xi′))
测试误差就是对每个样本点计算损失,然后计算损失的平均值。
测试误差的每个样本点都来自于测试集,训练误差的每个样本点都来自于训练集。
4.1.3 误差率与准确率
误差率与准确率是测试误差的两个特例,
- 误差率(Error Rate):
e test = 1 N ′ ∑ i ′ = 1 N ′ I ( y i ′ ≠ f ^ ( x i ′ ) ) e_{\text {test }}=\frac{1}{N^{\prime}} \sum\limits_{i^{\prime}=1}^{N^{\prime}} I\left(y_{i^{\prime}} \neq \hat{f}\left(x_{i^{\prime}}\right)\right) etest =N′1i′=1∑N′I(yi′=f^(xi′))
误差率所采用的损失函数是示性函数,也就是 y i ′ ≠ y_{i^{\prime}}\ne yi′=预测值 f ^ ( x i ′ ) \hat{f}\left(x_{i^{\prime}}\right) f^(xi′)的时候即为1, y i ′ = y_{i^{\prime}}= yi′=预测值 f ^ ( x i ′ ) \hat{f}\left(x_{i^{\prime}}\right) f^(xi′)的时候即为0. 误差率实际上体现的是预测值和真实值不相等的样本点的个数占测试集里样本总个数的比例。 - 准确率(Accuracy):
r test = 1 N ′ ∑ i ′ = 1 N ′ I ( y i ′ = f ^ ( x i ′ ) ) r_{\text {test }}=\frac{1}{N^{\prime}} \sum\limits_{i^{\prime}=1}^{N^{\prime}} I\left(y_{i^{\prime}}=\hat{f}\left(x_{i^{\prime}}\right)\right) rtest =N′1i′=1∑N′I(yi′=f^(xi′))
准确率是真实值与预测值完全相等的样本点占测试集中所有样本点的比例。
【注】 r test + e test = 1 r_{\text {test }}+e_{\text {test }}=1 rtest +etest =1
4.2 过拟合与模型选择
训练误差主要是衡量模型对已知数据的预测能力,而测试误差主要是衡量模型对未知数据的预测能力,在模型选择的时候我们都希望训练误差和测试误差都很小,有的时候训练误差很小,测试误差并不是很小(这也就是过拟合),这里就需要一个平衡。
多项式拟合案例:
生成样本的时候在真实函数的基础上加了一个噪声 ε i \varepsilon_i εi,样本为 y i = sin ( 2 π x i ) + ε i y_i=\sin (2\pi x_i)+\varepsilon_i yi=sin(2πxi)+εi,假设 ε i \varepsilon_i εi是来自于一个正态分布的。将 x i x_i xi取来自 ( 0 , 1 ) (0,1) (0,1)上的10个均匀的点,然后加上噪声 ε i \varepsilon_i εi得到输出 y i y_i yi,图中黑色曲线是真实函数,蓝色的点是10个样本点用来做训练集的。
【注】正态分布:
正态分布(Normal Distribution),也叫高斯分布(Gaussian Distribution),是最常见的一种概率分布,它在自然界和社会现象中广泛存在。正态分布的数学形式非常重要,它不仅在统计学、机器学习中起到基础性作用,还在很多其他领域,如物理学、经济学、工程学等都有广泛应用。
- 正态分布的定义
正态分布是指一种连续型概率分布,其概率密度函数(PDF)具有钟形曲线的形状。它的数学公式为:
f ( x ∣ μ , σ ) = 1 σ 2 π exp ( − ( x − μ ) 2 2 σ 2 ) f(x \mid \mu, \sigma)=\frac{1}{\sigma \sqrt{2 \pi}} \exp \left(-\frac{(x-\mu)^{2}}{2 \sigma^{2}}\right) f(x∣μ,σ)=σ2π1exp(−2σ2(x−μ)2)
其中:
- μ \mu μ是正态分布的均值(Mean),表示数据的中心位置。
- σ \sigma σ是正态分布的标准差(Standard Deviation),表示数据的分散程度(或波动范围)。
- σ 2 \sigma ^2 σ2是正态分布的方差(Variance),表示数据的变异度。
- x x x是变量,它遵循正态分布。
- 正态分布的特征
- 对称性:正态分布是完全对称的,左右两边的形状和概率完全相同,均值 μ \mu μ就是对称中心。
- 钟形曲线:它的概率密度函数呈现出钟形曲线的形状,数据集中在均值附近,随着远离均值,概率密度逐渐减小。
- 均值、中位数、众数相等:在正态分布中,均值、众数和中位数都重合在同一个位置上。
- 68-95-99.7法则:对于一个正态分布:
约68%的数据落在均值 ± 1 个标准差的范围内。
约95%的数据落在均值 ± 2 个标准差的范围内。
约99.7%的数据落在均值 ± 3 个标准差的范围内。
- 正态分布的参数
- 均值 μ \mu μ:均值是正态分布的中心位置,表示数据的集中趋势。它是分布的对称点。
- 标准差 σ \sigma σ:标准差衡量数据的离散程度,也就是说,数据的分布范围。标准差越大,表示数据的分布越广,波动越大;标准差越小,数据越集中。
- 方差 σ 2 \sigma ^2 σ2:方差是标准差的平方,也是衡量数据离散程度的度量,但通常我们更关注标准差。
- 标准正态分布
当均值 μ = 0 \mu=0 μ=0且标准差 σ = 1 \sigma = 1 σ=1时,正态分布被称为标准正态分布。其概率密度函数简化为:
f ( x ) = 1 2 π exp ( − x 2 2 ) f(x)=\frac{1}{\sqrt{2 \pi}} \exp \left(-\frac{x^{2}}{2}\right) f(x)=2π1exp(−2x2)
标准正态分布的特点:
- 均值为0,标准差为1。
- 其形状与普通正态分布一样,但标准差较小,分布更集中。
- 正态分布的应用
正态分布在实际中有着广泛的应用,以下是几个重要的领域:
- 自然界现象:许多自然现象,比如人的身高、体重、考试成绩等,往往都接近于正态分布。换句话说,在这些现象中,大多数数据点都集中在均值附近,极端的高或低值较少。
统计学:正态分布是许多统计推断方法(如假设检验、置信区间估计等)的基础。根据大数定律,很多随机变量的样本均值会逐渐趋近于正态分布。
中心极限定理:中心极限定理指出,很多独立同分布(i.i.d.)的随机变量的和(或平均值)将趋近于正态分布,无论原始数据的分布是什么。这使得正态分布在统计学中具有非常重要的地位。
- 正态分布的性质
- 线性组合:如果 X 1 , X 2 , ⋯ , X n X_1,X_2,\cdots,X_n X1,X2,⋯,Xn是互相独立的正态分布随机变量,那么它们的线性组合 a 1 X 1 + a 2 X 2 + … + a n X n a_{1} X_{1}+a_{2} X_{2}+\ldots+a_{n} X_{n} a1X1+a2X2+…+anXn也服从正态分布。
最小方差性质:在所有具有相同均值和方差的分布中,正态分布具有最小的方差,也就是说,它的分布最紧密。
- 正态分布的图形表示
正态分布的概率密度函数图形通常呈现一个钟形曲线,具有以下特点:
- 曲线在均值 μ \mu μ处达到最高点,表示概率密度最大。
- 曲线的两端渐近于 x x x轴,表示概率逐渐减小,但始终不为零。
- 曲线的形状由标准差 σ \sigma σ决定,标准差越大,曲线越平坦;标准差越小,曲线越尖锐。
下面,我们通过 M M M次多项式对之前的数据进行拟合:
- 假设给定的数据是由 m m m次多项式生成的:
f M ( x , w ) = w 0 + w 1 x + w 2 x 2 + ⋯ + w M x M = ∑ j = 0 M w j x j f_{M}(x, w)=w_{0}+w_{1} x+w_{2} x^{2}+\cdots+w_{M} x^{M}=\sum\limits_{j=0}^{M} w_{j} x^{j} fM(x,w)=w0+w1x+w2x2+⋯+wMxM=j=0∑Mwjxj
其中 M M M是最高次数, x x x是输入, w w w是参数向量。 - 经验风险:
L ( w ) = 1 2 ∑ i = 1 N ( f M ( x i , w ) − y i ) 2 L(w)=\frac{1}{2} \sum\limits_{i=1}^{N}\left(f_{M}\left(x_{i}, w\right)-y_{i}\right)^{2} L(w)=21i=1∑N(fM(xi,w)−yi)2
我们在拟合的时候采取使经验风险最小化的策略,这里经验风险中的损失函数用的是平方损失,也就是预测值与真实值差的平方,那么经验风险就可以写成每个样本点的平方损失的和,多了一个系数 1 2 \frac{1}{2} 21下面会解释。 - 代入多项式:
L ( w ) = 1 2 ∑ i = 1 N ( ∑ j = 0 M w j x i j − y i ) 2 L(w)=\frac{1}{2} \sum\limits_{i=1}^{N}\left(\sum\limits_{j=0}^{M} w_{j} x_{i}^{j}-y_{i}\right)^{2} L(w)=21i=1∑N(j=0∑Mwjxij−yi)2
通过最小二乘法求解参数,求解参数的时候,可以通过对经验风险中的参数 w w w求导,然后使导数等于0得到参数的表达式,求导的时候,平方损失函数会多出一个系数2,这样就能和前面的系数 1 2 \frac{1}{2} 21把系数约掉,所以系数变成 1 2 \frac{1}{2} 21只是为了计算方便,加不加这个系数 1 2 \frac{1}{2} 21都不会影响最终结果。
【注】最小二乘法
最小二乘法(Least Squares Method)是一种数学优化方法,主要用于回归分析中,目的是通过最小化误差的平方和来找到最优的拟合模型。最小二乘法的核心思想是,寻找一个函数模型,使得实际观察值与该模型预测值之间的差异(误差)的平方和最小化。
- 最小二乘法的基本原理
在数据分析或回归分析中,我们通常希望找到一个数学函数(如直线、曲线等),使得它能够尽可能地接近数据点。假设我们有一组数据点 ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x n , y n ) \left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right), \ldots,\left(x_{n}, y_{n}\right) (x1,y1),(x2,y2),…,(xn,yn),目标是找到一个函数 f ( x ) f(x) f(x)来拟合这些数据点。
最小二乘法的基本步骤如下:
- 拟合函数与数据点之间的误差:对于每个数据点 ( x i , y i ) (x_i,y_i) (xi,yi),拟合函数的预测值为 f ( x i ) f(x_i) f(xi),误差为 y i − f ( x i ) y_i-f(x_i) yi−f(xi).
- 计算误差的平方和:
为了避免误差的正负相抵消,我们对每个误差进行平方,得到每个数据点的误差平方值 ( y i − f ( x i ) ) 2 (y_i-f(x_i))^2 (yi−f(xi))2,然后将所有数据点的误差平方值加和,得到总的误差平方和:
S = ∑ i = 1 n ( y i − f ( x i ) ) 2 S=\sum\limits_{i=1}^{n}\left(y_{i}-f\left(x_{i}\right)\right)^{2} S=i=1∑n(yi−f(xi))2- 最小化误差平方和:
最小二乘法的目标就是找到使得误差平方和 S S S最小的函数模型 f ( x ) f(x) f(x).
- 线性回归中的最小二乘法
对于线性回归模型 y = β 0 + β 1 x y=\beta_0+\beta_1x y=β0+β1x,我们需要通过最小化误差平方和 S S S来得到最优参数。首先,误差平方和可以表示为:
S ( β 0 , β 1 ) = ∑ i = 1 n ( y i − ( β 0 + β 1 x i ) ) 2 S\left(\beta_{0}, \beta_{1}\right)=\sum\limits_{i=1}^{n}\left(y_{i}-\left(\beta_{0}+\beta_{1} x_{i}\right)\right)^{2} S(β0,β1)=i=1∑n(yi−(β0+β1xi))2
为求得最小值,我们对 β 0 \beta_0 β0和 β 1 \beta_1 β1求偏导数,并令其为零,得到以下正态方程:
- 对 β 0 \beta_0 β0求偏导:
∂ S ∂ β 0 = − 2 ∑ i = 1 n ( y i − β 0 − β 1 x i ) = 0 \frac{\partial S}{\partial \beta_{0}}=-2 \sum\limits_{i=1}^{n}\left(y_{i}-\beta_{0}-\beta_{1} x_{i}\right)=0 ∂β0∂S=−2i=1∑n(yi−β0−β1xi)=0- 对 β 1 \beta_1 β1求偏导:
∂ S ∂ β 1 = − 2 ∑ i = 1 n ( y i − β 0 − β 1 x i ) x i = 0 \frac{\partial S}{\partial \beta_{1}}=-2 \sum\limits_{i=1}^{n}\left(y_{i}-\beta_{0}-\beta_{1} x_{i}\right) x_{i}=0 ∂β1∂S=−2i=1∑n(yi−β0−β1xi)xi=0
通过求解这两个方程,可以得到 β 0 \beta_0 β0和 β 1 \beta_1 β1的最优解。最终,最小二乘法得到的回归直线方程为:
β ^ 1 = n ∑ x i y i − ∑ x i ∑ y i n ∑ x i 2 − ( ∑ x i ) 2 β ^ 0 = ∑ y i − β 1 ^ ∑ x i n \begin{array}{l} \hat{\beta}_{1}=\frac{n \sum x_{i} y_{i}-\sum x_{i} \sum y_{i}}{n \sum x_{i}^{2}-\left(\sum x_{i}\right)^{2}}\\ \hat{\beta}_{0}=\frac{\sum y_{i}-\hat{\beta_{1}} \sum x_{i}}{n} \end{array} β^1=n∑xi2−(∑xi)2n∑xiyi−∑xi∑yiβ^0=n∑yi−β1^∑xi
其中 β ^ 0 \hat{\beta}_0 β^0最优截距, β ^ 1 \hat{\beta}_1 β^1是最优斜率。
- 最小二乘法的应用
最小二乘法被广泛应用于各种统计建模和数据分析任务中,特别是在回归分析中。以下是一些常见的应用场景:
- 线性回归分析:最小二乘法是线性回归的核心方法,用于估计数据中自变量与因变量之间的关系。
- 多项式回归:通过对数据进行多项式拟合,可以使用最小二乘法来找到最佳的多项式系数。
- 曲线拟合:不仅可以用于直线拟合,最小二乘法还可以用于任意曲线(例如指数曲线、对数曲线等)的拟合。
图像处理与信号处理:在图像处理、图像压缩、信号处理等领域,最小二乘法用于数据拟合、去噪声等任务。
机器学习:在机器学习中,尤其是在回归模型中,最小二乘法用于训练模型(如线性回归)。
- 最小二乘法的优缺点
优点:
- 简单有效:最小二乘法计算简单,易于理解和实现,尤其适用于线性模型。
- 计算效率高:对于大多数问题,最小二乘法的计算可以通过解析解得到,效率较高。
- 良好的统计性质:在一些条件下,最小二乘法估计是无偏的、有效的。
缺点:- 对异常值敏感:最小二乘法对离群点(异常值)非常敏感,少数的异常值可能会严重影响模型的拟合效果。
- 假设数据线性:最小二乘法通常假设数据之间存在线性关系,如果数据呈现非线性特征,最小二乘法可能效果不好。
- 计算复杂度:对于大量数据和高维度问题,最小二乘法的计算可能会变得比较复杂,尤其是当数据不满足某些条件时,可能需要迭代求解。
刚才的多项式拟合结果:
M = 0 M=0 M=0拟合曲线就是平行于 x x x轴的直线,此时与真实曲线差距较大, M = 1 M=1 M=1是一条直线,稍微接近真实曲线, M = 3 M=3 M=3的时候,拟合曲线和真实曲线非常接近, M = 9 M=9 M=9的时候,拟合曲线通过了所有的样本点, M = 9 M=9 M=9的时候,参数有10个,样本点也有10个,所以这时候的拟合曲线恰好穿过所有样本点,训练误差几乎为0,但是 M = 9 M=9 M=9是一个过拟合的现象。
4.2.1 过拟合
过拟合(Over-Fitting):学习所得模型包含参数过多,出现对已知数据预测很好,但对未知数据预测很差的现象。
这是 M M M的值与误差值的关系图,没有给出 M = 9 M=9 M=9的情况,因为当 M = 9 M=9 M=9的时候,训练误差几乎为0,但是测试误差会非常大,远远超出了这个图,用横轴 M M M代表了模型的复杂度, M M M越大模型越复杂,而橙色的折线代表的是测试误差,也就是模型对未知数据的训练能力,而蓝色的线代表的是训练误差,也就是模型对已知数据的预测能力。当 M = 3 M=3 M=3的时候,训练误差和测试误差都达到了最小点。
上图中,横轴代表模型复杂度,纵轴代表预测误差,随着模型复杂度的增加,训练误差会越来越小,但是测试误差会先减小达到一个最小值再增大,所以选择模型的时候一定要注意防止过拟合的现象出现,
相关文章:
【简博士统计学习方法】第1章:4. 模型的评估与选择
4. 模型的评估与选择 4.1 训练误差与测试误差 假如存在样本容量为 N N N的训练集,将训练集送入学习系统可以训练学习得到一个模型,我们将这么模型用决策函数的形式表达,也就是 y f ^ ( x ) y\hat{f}(x) yf^(x),关于模型的拟合…...
GitLab创建用户,设置访问SSH Key
继上一篇 Linux Red Hat 7.9 Server安装GitLab-CSDN博客 安装好gitlab,启用管理员root账号后,开始创建用户账户 1、创建用户账户 进入管理后台页面 点击 New User 输入用户名、邮箱等必填信息和登录密码 密码最小的8位,不然会不通过 拉到…...
flutter 专题二十四 Flutter性能优化在携程酒店的实践
Flutter性能优化在携程酒店的实践 一 、前言 携程酒店业务使用Flutter技术开发的时间快接近两年,这期间有列表页、详情页、相册页等页面使用了Flutter技术栈进行了跨平台整合,大大提高了研发效率。在开发过程中,也遇到了一些性能相关问题和…...
RAFT:随机退火森林
RAFT:随机退火森林 RAFT(Randomized Annealed Forests)是一种机器学习算法,主要用于分类和回归任务。以下是对它的介绍及原理举例说明: 一、RAFT简介 RAFT是一种基于随机森林的集成学习方法,它结合了随机森林的优点和退火算法的思想。随机森林通过构建多个决策树并综…...
上下游服务间解耦的技术与管理
一、解耦为何至关重要 在当今软件研发的复杂生态中,耦合问题如影随形,困扰着众多开发者与企业。当多个模块、系统或团队紧密交织,相互依赖程度不断攀升,仿佛一张错综复杂的网,牵一发而动全身。就拿电商系统来说&#…...
[桌面运维]windows自动设置浅深色主题
设置自动浅色/深色主题 我看很多up主的教程过于繁琐,需要添加四个功能,并且有些还不能生效! 大多数都是教程: 自动任务栏浅色 add HKCUSOFTWAREMicrosoftWindowsCurrentVersionThemesPersonalize/v SystemUsesLightTheme /t …...
【Spring】Spring DI(依赖注入)详解——注入参数的细节处理-内部Bean的注入
引言 在现代Java开发中,Spring框架已经成为了构建企业级应用的标准工具之一。Spring的核心特性之一就是依赖注入(Dependency Injection,DI),它通过将对象的依赖关系从代码中解耦出来,提升了代码的可维护性…...
Docker: 教程07 - ( 如何对 Docker 进行降级和升级)
如果我们使用 docker 来管理容器,那么保持 docker 引擎的更新将会是十分重要的,这一篇文章我们将会讨论如何对Docker 进行降级和升级。 准备工作 - docker 环境 我们需要拥有一个安装好 docker 的运行环境。 如果你需要了解如何安装 docker 可以通过如…...
CV-LLM经典论文解读|VTimeLLM: Empower LLM to Grasp Video MomentsVTimeLLM:赋能大语言模型理解视频片段
论文标题 VTimeLLM: Empower LLM to Grasp Video Moments VTimeLLM:赋能大语言模型理解视频片段 论文链接: VTimeLLM: Empower LLM to Grasp Video Moments论文下载 论文作者 Bin Huang, Xin Wang, Hong Chen, Zihan Song, Wenwu Zhu (Tsinghua Un…...
新手学习yolov8目标检测小记2--对比实验中经典模型库MMDetection使用方法(使用自己的数据集训练,并转换为yolo格式评价指标)
一、按照步骤环境配置 pip install timm1.0.7 thop efficientnet_pytorch0.7.1 einops grad-cam1.4.8 dill0.3.6 albumentations1.4.11 pytorch_wavelets1.3.0 tidecv PyWavelets -i https://pypi.tuna.tsinghua.edu.cn/simple pip install -U openmim -i https://pypi.tuna.t…...
Kubernetes开发环境minikube | 开发部署apache tomcat web单节点应用
minikube是一个主要用于开发与测试Kubernetes应用的运行环境 本文主要描述在minikube运行环境中部署J2EE tomcat web应用 minikube start --force minikube status 如上所示,在Linux中启动minikube运行环境 service docker start docker version service docker …...
浙江安吉成新的分布式光伏发电项目应用
摘 要:分布式光伏发电站是指将光伏发电组件安装在用户的建筑物屋顶、空地或其他适合的场地上,利用太阳能进行发电的一种可再生能源利用方式,与传统的大型集中式光伏电站相比,分布式光伏发电具有更灵活的布局、更低的建设成本和更高…...
Git - 记录一次由于少输入了一个命令导致的更改丢失
Git - 记录一次由于少输入了一个参数导致的更改丢失 前言 某晚我激情开发了几个小时,中途没有进行commit存档。准备睡觉时,我想创建一个新的分支并将今晚所有更改提交到新分支上(似乎应该开发时候就创建?)。 然后因…...
【Nginx】设置https和http同时使用同一个端口访问
以下是一个同时使用 HTTP 和 HTTPS 并通过 8070 端口的配置示例: server {listen 8070;server_name your_domain.com;location / {root /var/www/html;index index.html;} }server {listen 8070 ssl;server_name your_domain.com;# SSL 证书和私钥的路径ssl_certif…...
Vue 组件开发:构建高效可复用的 UI 构建块
在现代前端开发中,Vue.js 凭借其简洁的 API、渐进式框架设计和强大的生态系统,已经成为众多开发者的首选。Vue 组件化开发是其核心特性之一,它允许我们将复杂的 UI 拆分成多个独立、可复用的组件,从而提高代码的可维护性和可扩展性…...
【Uniapp-Vue3】v-if条件渲染及v-show的选择对比
如果我们想让元素根据响应式变量的值进行显示或隐藏可以使用v-if或v-show 一、v-show 另一种控制显示的方法就是使用v-show,使用方法和v-if一样,为true显示,为false则不显示。 二、v-if v-if除了可以像v-show一样单独使用外,还…...
浏览器报错:您的连接不是私密连接,Kubernetes Dashboard无法打开
问题描述 部署完成Kubernetes Dashboard后,打开HTTPS的web页面,Chrome和Edge浏览器都无法正常加载页面,会提示您的连接不是私密连接的报错。 原因: 浏览器不信任这些自签名的ssl证书,为了…...
asp.net core 属性路由和约定路由
在 ASP.NET Core 中,Web API 中的路由(Route)用于确定客户端请求的 URL 与服务器端处理逻辑之间的映射关系。路由机制在 Web API 的开发中非常重要,它帮助定义和管理不同请求路径如何触发特定的控制器和操作方法。 1. 路由概述 …...
机器学习之模型评估——混淆矩阵,交叉验证与数据标准化
目录 混淆矩阵 交叉验证 数据标准化 0-1标准化 z 标准化 混淆矩阵 混淆矩阵(Confusion Matrix)是一种用于评估分类模型性能的工具。 它是一个二维表格,其中行表示实际的类别,列表示模型预测的类别。 假设我们有一个二分类问题&…...
Java实现UDP与TCP应用程序
三、Java实现UDP应用程序 3.1 InetAddress类 java.net.InteAddress类是用于描述IP地址和域名的一个Java类; 常用方法如下: public static InetAddress getByName(String host):根据主机名获取InetAddress对象public String getHostName()…...
[python3]Excel解析库-calamine,10倍openpyxl性能
calamine 是一个用于读取多种电子表格格式(如 Excel、LibreOffice Calc 等)的 Python 库。它支持 .xls, .xlsx, .ods 和 .csv 文件格式,提供了简单易用的 API 来加载和处理电子表格数据。calamine 的一大特点是它的轻量级和高效性,…...
Clisoft SOS设置Server和Project
Clisoft SOS设置Server和Project 一、关于SOS Servers、Clients、Projects和Work Areas 以下三个图是官方文档中介绍的三种情况 图1:带有两个客户端的SOS服务器 图2:使用本地缓存服务器 图3:远程设计团队的缓存服务器 因为SOS软件需要…...
基于FPGA的出租车里程时间计费器
基于FPGA的出租车里程时间计费器 功能描述一、系统框图二、verilog代码里程增加模块时间增加模块计算价格模块上板视频演示 总结 功能描述 (1);里程计费功能:3公里以内起步价8元,超过3公里后每公里2元,其中…...
AnaConda下载PyTorch慢的解决办法
使用Conda下载比较慢,改为pip下载 复制下载链接到迅雷下载 激活虚拟环境,安装whl,即可安装成功 pip install D:\openai.wiki\ChatGLM2-6B\torch-2.4.1cu121-cp38-cp38-win_amd64.whl...
Hello 2025(A-C)
补题链接:Dashboard - Hello 2025 - Codeforces A. MEX Table 思路 除了含0的列和行其他的都是0,输出max(n,m)1即可 代码 #include<bits/stdc.h> using namespace std;#define vcoistnt ios_base::sync_with_stdio(false); cin.tie(NULL); co…...
Burpsuite20241102macM1版安装
1、安装jdk11 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" brew update brew install openjdk11 echo export PATH"/opt/homebrew/opt/openjdk11/bin:$PATH" >> ~/.zshrc source ~/.zshrc j…...
jenkins入门10--自动化构建
build periodically:设定类似cron周期性时间触发构建 * * * * * (五颗星,中间用空格隔开) 第一颗表示分钟,取值0~59 第二颗表示小时,取值0~23 第三颗表示一个月的第几天,取值1~31 第四颗表示第几月…...
Java基础概念
自动装箱 Integer i 10; //装箱 int n i; //拆箱 普通数据类型:直接在栈内存中分配空间,存储的是具体的值。包装类:作为对象在堆内存中分配空间。包装类实际上是对普通数据类型的封装,每个包装类都包含了对应的数据类…...
57.在 Vue 3 中使用 OpenLayers 点击选择 Feature 设置特定颜色
在 Web 开发中,地图应用是非常常见的需求,而 OpenLayers 是一个非常强大的地图库,它提供了丰富的地图操作功能。今天,我们将一起学习如何在 Vue 3 中结合 OpenLayers 使用点击事件来选择地图上的 Feature,并设置特定的…...
HTML——61. 单行文本框和密码输入框(主讲input元素的type属性)
<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>单行文本框和密码输入框</title></head><body><!--input元素的type属性:(必须要有)--> <!--单行文本框:1.type"text"2.可…...
h264之多视点mvc编码及解码过程(JMVC平台举例)
h264标准参考平台JMVC是针对MVC标准的,JMVC支持多视点编码、合流、多视点解码操作。可以利用JMVC生成h264 mvc码流和解码。 JMVC的下载地址是:jvet / JMVC GitLabH.264/AVC multi-view coding (MVC) extension JMVC reference softwarehttps://vcgit.hh…...
深度学习blog-深刻理解线性变换和矩阵
深度学习中避免不了矩阵运算,或者张量(其实是矩阵数组)运算。卷积是矩阵加、乘法,注意力也是一样。本质都一样,所谓注意力,卷积、滤波,是对不必了解数学的人说的,底层都是矩阵运算&a…...
C语言 扫雷程序设计
目录 1.main函数 2.菜单打印menu函数 3.游戏game函数 4.宏定义 5.界面初始化 6.打印界面 7.设置雷 8.统计排查坐标周围雷的个数 9.排查雷 10.总代码 test.c代码 game.h代码 game.c代码 结语: 一个简单的扫雷游戏,通过宏定义可以修改行列的…...
[笔记] Jenkins 安装与配置全攻略:Ubuntu 从零开始搭建持续集成环境
随着 DevOps 流程的普及,持续集成(CI)和持续交付(CD)已成为现代软件开发中不可或缺的一部分。Jenkins 作为一款开源的自动化服务器,广泛应用于 CI/CD 管道的构建与管理。它不仅支持多种编程语言和工具链&am…...
【51单片机零基础-chapter3:按键:独立按键|||附带常见C语句.逻辑运算符】
将unsigned char var0;看作沟通二进制和十进制的桥梁 var是8位,初始为0000 0000; 同时可以进行十进制的运算 逻辑运算 位运算 & 按位与(有0则0) | 按位或(有1则1) ~ 按位非 ^ 按位异或(相同则1,不同为0) <<按位左移 >>按位右移 位运算符解释: 0011 1100 <&…...
深入浅出:深层网络处理技术的教学指南
引言 在人工智能的浪潮中,深层网络处理技术(Deep Learning)无疑是最耀眼的明星之一。无论是图像识别、自然语言处理,还是语音识别,深层网络都展现出了强大的能力。然而,对于初学者来说,深层网络…...
深入浅出Node.js-1(node.js入门)
全新专栏带你快速掌握node.js Node.js入门 html,css,js 30年了 nodejs环境 09年出现 15年 nodejs为我们解决了2个方面的问题: 【锦上添花】让我们前端工程师拥有了后端开发能力(开接口,访问数据库) - 大公司BFF(5…...
Django的runserver
当年执行 python manage runserver命令时 1. 先执行 runserver 中的 handle方法 2. 执行 self.run()方法 3. 执行 self.inner_run() 3.1 inner_run 下 run方法的封装 3.1.1 接着看 handle 怎么来的 封装了一个方法 接着找返回函数 3.1.2在 basehttp 下 3.1.3 get_wsgi_appl…...
MySQL 存储引擎
InnoDB InnoDB是MySQL的默认存储引擎,自MySQL 5.5版本起开始使用。它提供了具有提交、回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎。 主要特性: 事务支持:完全支持ACID(原子性、一致性、隔离性、持久…...
React知识盲点——组件通信、性能优化、高级功能详解(大纲)
组件通信 React 组件通信详解 在 React 中,组件通信是一个核心概念,主要指的是如何让不同的组件共享和传递数据。React 提供了多种机制来实现组件间的数据传递和状态共享。以下是几种常见的组件通信方式,包括:父子组件通信&…...
Maven 详细配置:Maven 项目 POM 文件解读
Maven 是 Java 开发领域中广泛使用的项目管理和构建工具,通过其核心配置文件——POM(Project Object Model)文件,开发者能够定义项目的基本信息、依赖关系、插件配置以及构建生命周期等关键要素。POM 文件不仅是 Maven 项目的核心…...
selenium
pythonselenium selenium是一个第三方库,python有很多库; 1、什么是ui自动化? 通过模拟手工操作用户ui页面的方式,用代码去实现自动化操作和验证的行为。 2、ui自动化的优点? (1)解决重复性的功能测试…...
网络安全:设备原理与操作
设备型号概述 网络安全企业有哪些? 国外:思科,Juniper,惠普,3Com,。。。。 国内:华为,中性,锐捷,蓝盾,绿盟,山石网科,36…...
pytorch中nn.Conv2d详解及参数设置原则
文章目录 基础参数1. in_channels (输入通道数)2. out_channels (输出通道数)3. kernel_size (卷积核大小)4. stride (步幅)5. padding (填充)6. dilation (膨胀)7. groups (分组卷积)8. bias (偏置) 如何设置参数?1. **in_channels 和 out_channels(输入…...
select下拉框,首次进入页面没有显示value的情况
bug场景: 类似这种bug情况排查如下: 首先 理解含义 options就是存放键值对的,id就是key,对上了它就自动把label显示 而且如果你用来当作key和label的字段,与后端返回的不一致,还可以进行更改 其次 排查接…...
接口项目操作图-thinkphp6-rabbitmq
一、用户开户流程 用户首次需要联系商务开通账户,需要提供手机号及来访问的IP。开好户之后,平台方将提供用户访问的key值及header头部参数的公钥加密文件、body访问参数以及返回数据的公私钥加解密文件。 二、用户请求流程 用户将拿到的key值进行rsa公钥…...
thinkphp6.0常用设计模式实例
单例模式 (Singleton) 场景:确保一个类只有一个实例,并提供一个全局访问点。 实际业务:数据库连接、日志记录器、配置管理等。 ThinkPHP 6.0 实现: namespace app\common;class DatabaseConnection {private static $instance …...
微服务保护——Sentinel
什么是微服务保护? 微服务保护是一系列用于保障微服务架构稳定、可靠运行的策略与技术手段,在复杂的分布式微服务系统里,它能避免局部故障引发连锁反应,从而维持整个系统的可用性,主要涵盖以下几个关键部分:…...
php 多进程那点事,用 swoole 如何解决呢 ?
在 PHP 中,多进程的处理通常会遇到一些挑战,比如资源共享、进程间通信、性能优化等。Swoole 是一个高性能的协程和多进程框架,旨在为 PHP 提供异步、并发、协程等功能,解决了传统 PHP 环境中的多进程管理问题。通过使用 Swoole&am…...
STM32+ADC+DMA快速循环转换
测试平台:STM32F405RGT6 uint32_t AD_Buf[100]{0}; HAL_ADC_Start_DMA(&hadc2,(uint32_t *)AD_Buf,100); while(1) {printf("AD_Buf:%d\n",AD_Buf[0]); }...