R语言非参数回归预测摩托车事故、收入数据:局部回归、核回归、LOESS可视化...

news2024/9/27 7:48:58

全文链接:https://tecdat.cn/?p=37784

非参数回归为经典(参数)回归方法提供了一种灵活的替代方法。与假定回归关系具有依赖于有限数量的未知参数的已知形式的传统(参数)方法不同,非参数回归模型尝试从数据样本中学习回归关系的形式点击文末“阅读原文”获取完整代码数据)。

相关视频

1.1 动机和目标

所有非参数回归模型都涉及在拟合观察到的数据样本(模型拟合)和“平滑”函数估计(模型精简)之间找到某种平衡。通常,这种平衡是使用某种形式的交叉验证来确定的,交叉验证会尝试找到适合预测新数据的函数估计。因此,非参数回归模型可用于发现变量之间的关系以及开发可推广的预测规则。

在这些说明中,您将学习如何拟合和调整简单的非参数回归模型。您还将学习如何使用非参数回归模型来可视化数据中的关系并为新数据形成预测。

1.2 R 中的简单平滑器

这些说明涵盖了 “简单” 非参数回归的三种经典方法:局部平均、局部回归和核回归。请注意,我所说的 “simple” 是指只有一个 (连续) 预测器。平滑样条曲线以及多元回归和广义回归的扩展将在另一组注释中介绍。

局部平均(弗里德曼的“Super Smoother”):

supsmu(x, y, wt =, span = "cv", periodic = FALSE, bass = 0, trace = FALSE)

局部回归(克利夫兰 LOESS):

loess(formula, data, weights, subset, na.action, model = FALSE,span = 0.75, enp.target, degree = 2,parametric = FALSE, drop.square = FALSE, normalize = TRUE,family = c("gaussian", "symmetric"),method = c("loess", "model.frame"),control = loess.control(...), ...)

核回归 (Nadaraya 和 Watson 的核平滑器):

ksmooth(x, y, kernel = c("box", "normal"), bandwidth = 0.5,range.x = range(x),n.points = max(100L, length(x)), x.points)
1.3 NP 回归的必要性

最初是为了强调将图形与回归模型一起使用的必要性而设计的,但它也为非参数回归提供了很好的动力。

1.4 模型和假设

假设我们观察到 ( n ) 独立点对 ( {(x\_i, y\_i)} ) 并且不失一般性地假设 ( x\_1 \leq x\_2 \leq \ldots \leq x_n )。此外,假设 ( X ) 和 ( Y ) 具有以下关系:

ccede71fbbe63208b2808526370def0d.png

其中 ( f(\cdot) ) 是某个未知的平滑函数,而 ( \epsilon\_i ) 是具有均值零和方差 ( \sigma^2 ) 的独立同分布(IID)误差项。请注意,这些方法实际上并不需要同次误差方差的假设;但是,此假设通常可用于优化和推理。假设均值零误差项是必要的,因为这意味着 ( E(y\_i | x\_i) = f(x\_i) ),这意味着未知的平滑函数 ( f(\cdot) ) 描述了给定 ( X ) 的条件均值 ( Y )。非参数回归估计器(也称为“平滑器”)尝试从干扰数据样本中估计未知函数 ( f(\cdot) )。

局部平均

2.1 定义

估计未知函数 ( f(\cdot) ),Friedman (1984) 提出了简单而有力的_局部平均_概念。函数的局部平均估计值 ( f(\cdot) ) 在点 ( x ) 是通过取 ( y\_i ) 值对应于 ( x\_i ) 值,这些值位于 ( x ) 的_给定的_附近。更正式地说,局部平均估计可以写成

a308283cfe0a67a68e339a745bc5abe4.png

其中,权重的定义使得 ( w\_i(x) = 1 ) 如果点 ( x\_i ) 就在 ( x ) 的附近,而 ( w_i(x) = 0 ) 否则。请注意,权重是 ( x ) 的函数,即每个 ( x )。

2.2 邻近有多近?

为了正式化_邻近_的概念,弗里德曼建议使用 ( x_i ) 的最小对称窗口 ( x ) 包含 ( s ) 个观察值,其中 ( s \in (0,1] )。参数 ( s ) 称为 span 参数,该参数控制函数估计的平滑度。随着 ( s \to 0 ),函数估计变得更加锯齿状(即不太平滑),并且随着 ( s \to 1 ),函数估计变得更加平滑。目标是找到 ( s ),它提供了未知平滑函数的“合理”估计 ( f(\cdot) )。

2.3 视觉直觉

为了了解局部平均估计量,我们将看看该点的估计值是如何形成的 ( x^* = 0.3 ) 使用 span 参数的不同值。

e4b321ac874e2ce316619818ef6f6f0d.png

本地平均估计值 ( \hat{f}(0.3) ) 具有不同的 span 值。


点击标题查阅往期内容

2cbb5a30201eaace189a661e4d15cb4c.png

高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数据

outside_default.png

左右滑动查看更多

outside_default.png

01

c030c06dafd5d074212304f3eb1fc6eb.png

02

64d9ac0a8de7de2174200e3efea2775d.png

03

87b69d615e4ba5c5dddcb262d1495f2e.png

04

5f861bb5e69038ba82e64a984487321f.png

请注意,估计值(由红色三角形表示)是通过将所有 ( y_i ) 本地窗口内的值(由灰色框表示)平均化得到的。上面的示例显示了点的窗口 ( x^* = 0.3 ),但同样的想法也适用于其他点。要在不同的 ( x ) 值,我们只需将平均窗口沿 x 轴向下滑动,使其以新的 ( x ) 值。因此,局部平均估计器有时称为“移动平均”估计器。

2.4 选择 Span

通常,其 ( s ) 使用普通 (Leave-one-out) 交叉验证确定。让 ( \hat{y}\_i(s) ) 表示 ( f(\cdot) ) 在点 ( x\_i ) 通过伸出 ( i )-th 对 ( (x\_i, y\_i) )。请注意,表示法 ( \hat{y}_i(s) ) 表示估计值是 span 参数的函数 ( s )。普通交叉验证方法寻求找到 ( s ) 这最大限度地减少了

e88a6692e2b27af55856f1240fab4ee6.png

这最大限度地减少了 (平方) 留一法预测误差。这是函数用于选择 span 参数的默认方法。

局部回归

3.1 定义

估计未知函数 ( f(\cdot) ),Cleveland (1979) 提出了_局部回归_的概念。函数的局部回归估计值 ( f(\cdot) ) 在点 ( x ) 是通过将加权最小二乘回归模型拟合到 ( y\_i ) 值对应于 ( x\_i ) 值,这些值位于 ( x ) 的_给定的_附近。更正式地说,局部回归估计可以写成

a7ea58d2af5dd0dec082d1226b467a3d.png

其中 ( \hat{\beta}^0(x) ) 和 ( \hat{\beta}^1(x) ) 是加权最小二乘问题的最小化器

adf69eedb9ae06e49d1fb7d6a0495f5e.png

请注意,( \hat{\beta}^0(x) ) 和 ( \hat{\beta}^1(x) ) 是 ( x ) 的函数,鉴于权重 ( {w\_i(x)}^n\_{i=1} ) 是 ( x ) 的函数。

在这种情况下,权重的定义使得 ( w\_i(x) ) 是 ( |x - x\_i| ) 仅当 ( x\_i ) 就在附近 ( x )。一种流行的权重函数是\_三立方_函数

1d446c4986e924942446af8ab7e2d5dc.png

其中 ( \delta > 0 ) 是一些标量,用于确定哪些点_足够接近_给定的 ( x ) 接收非零权重。

上述公式适用于局部线性回归,其中简单的线性回归模型适合 ( x )。这个想法可以很容易地扩展到包括高阶多项式项。例如,局部二次回归估计值的形式为

44f1b64b3eb67d70070317f64f74d89e.png

其中 ( {\hat{\beta}^0(x), \hat{\beta}^1(x), \hat{\beta}^2(x)} ) 是加权最小二乘问题的最小化器

f8aeec60518156e237ca73e3243cb3a5.png

和权重 ( w_i(x) ) 的定义如前所述。

3.2 附近有多近?

Cleveland 提议定义 ( \delta ),以便权重具有非零值 ( s ) 个观察值中,其中 ( s \in (0,1] ) 是 span 参数。假设 ( x\_i ) 均匀分布在 ( a = \min(x\_i) ) 和 ( b = \max(x\_i) ),我们有 ( \delta = s/2 ) 对于积分 ( x\_i ) 距离边界点足够远的一个 ( a ) 和 ( b )。

1f3ee16cfacdc2bcfdd4e8fe79c6941f.png

三立方函数。局部回归问题的权重 ( x = 0.3 ) 具有不同的 delta 值。

3.3 视觉直觉

为了了解局部回归估计器,我们将看看该点的估计是如何形成的 ( x^* = 0.3 ) 使用 span 参数的不同值。我们将首先使用局部线性回归查看 LOESS 估计器,然后我们将查看使用局部二次回归的 LOESS 估计器。

局部线性回归

# 定义函数和数据集seed(1)n <- 101x <- seq(0, 1, length.out = n)fx <- sin(2 * pi * x)y <- fx + rnorm(n, sd = 0.5)# 定义x*和窗口的颜色xstar <- 0.3cols <- rgb(190/255,190/255,190/255,alpha=0.5)# 设置2x2的子图par(mfrow = c(2,2))# 遍历跨度(0.1, 0.2, 0.3, 0.4)for(s in c(0.1, 0.2, 0.3, 0.4)){# 绘制数据和真实函数plot(x, y, main = paste0("span = ", s), ylim = c(-2.5, 2.5),cex.lab = 1.5, cex.axis = 1.25)lines(x, fx, col = "blue", lwd = 2)# 绘制窗口window <- c(xstar - s / 2, xstar + s / 2)rect(window\[1\], -3, window\[2\], 3, col = cols)# 定义权重w <- tricube(x - xstar, delta = s / 2)# 绘制估计X.w <- sqrt(w) * cbind(1, x)y.w <- sqrt(w) * ybeta <- solve(crossprod(X.w)) %*% crossprod(X.w, y.w)ystar <- as.numeric(cbind(1, xstar) %*% beta)points(xstar, ystar, pch = 17, col = "red", cex = 1)# 添加回归线abline(beta, lty = 3)# 添加图例legend("topright", legend = c("data", "truth"),pch = c(1, NA), lty = c(NA, 1), col = c("black", "blue"), bty = "n")legend("bottomright", legend = c("estimate", "window"),pch = c(17, 15), col = c("red", "gray"), bty = "n")}

2a1ca043d5d8b6fc39d79306a212887a.png

局部线性回归估计值 ( \hat{f}(0.3) ) 具有不同的 span 值。

请注意,估计值(由红色三角形表示)是通过将加权线性回归模型拟合到 ( y_i ) 本地窗口内的值(由灰色框表示)。上面的示例显示了点的窗口 ( x^* = 0.3 ),但同样的想法也适用于其他点。要在不同的 ( x ) 值,我们只需将窗口沿 x 轴向下滑动,使其以新的 ( x ) 值,并相应地重新定义权重。

局部二次回归

b05f1e76135a6f60af8c4c2277294846.png

局部二次回归估计值 ( \hat{f}(0.3) ) 具有不同的 span 值。

请注意,估计值(由红色三角形表示)是通过将加权二次回归模型拟合到 ( y_i ) 本地窗口内的值(由灰色框表示)。上面的示例显示了点的窗口 ( x^* = 0.3 ),但同样的想法也适用于其他点。要在不同的 ( x ) 值,我们只需将窗口沿 x 轴向下滑动,使其以新的 ( x ) 值,并相应地重新定义权重。

3.4 选择 Span

您可能已经注意到,该函数不提供任何
用于选择 span 参数的数据驱动方法。因此,该函数的许多用户(在不知不觉中)使用默认的 span 值 loess loess ( s = 0.75 ),它不能保证产生均值函数的合理估计 ( f(\cdot) )。

与其使用 span 参数的任意值,不如使用交叉验证的估计值。请注意,普通的交叉验证标准(来自上一节)可以更高效地写为

f17cead4d0fef1509a5b864d1a95c25e.png

其中 ( h_{ii}(s) ) 是“帽子矩阵” ( H(s) ) 的第 ( i )-th 对角线元素,这是线性变换 ( y = (y\_1, \ldots, y\_n)^T ) 到 ( \hat{y}\_s = (\hat{y}\_1(s), \ldots, \hat{y}\_n(s))^T ),即 ( \hat{y}\_s = H(s)y ) 其中 ( \hat{y}_s ) 是对应于 span 参数的拟合值的向量 ( s )。

OCV 标准可以解释为(均值)平方误差损失函数的加权版本,其中权重的形式为 ( w\_i = (1 - h\_{ii}(s))^{-2} )。请注意,杠杆分数 ( h_{ii}(s) ),范围介于 0 和 1 之间,则不同观测值之间可能有很大差异,这意味着 OCV 标准可以为不同的观测值分配不同的权重。GCV 标准通过在 OCV 标准的基础上将 ( h_{ii}(s) ) 替换为其计算中的平均值,例如

d795add5cb16f6ef0f799de46ef4b7cb.png

其中 ( \nu\_s = \sum\_{i=1}^n h_{ii}(s) ) 是“帽子矩阵”的迹,它是函数估计的自由度的估计值。以下函数提供了使用 GCV 调整 span 参数的函数的简单实现。

核回归

4.1 定义

核回归是核密度估计思想对回归问题的扩展。Nadaraya (1964) 和 Watson (1964) 独立提出了估计 ( f(\cdot) ) 使用响应值的核加权线性组合,例如

88611472e49b8acb628a06f763972e2f.png

其中,权重定义为

f11275a5d32941946dcd6ab10afb47a1.png

跟 ( K(\cdot) ) 表示一些已知的核函数(通常是高斯核),以及 ( h > 0 ) 表示 bandwidth 参数。请注意,bandwidth 参数控制来自 ( (x\_i, y\_i) ) 对的信息量用于估计函数 ( f(\cdot) ) 在点 ( x )。

4.2 附近有多近?

请记住,bandwidth 参数与核函数的标准差相关,该函数以每个 ( x\_i ) 价值。因此,函数的核回归估计值 ( f(\cdot) ) 在点 ( x ) 是通过采用 ( y\_i ) 值,其中为每个 ( y\_i ) 如果 ( x\_i ) 就在附近 ( x ) 否则相对较小。作为 bandwidth 参数 ( h \to 0 ),则 ( f(x) ) 仅使用来自 ( y\_i ) 的值 ( x\_i ) 非常接近 ( x )。相比之下,作为 ( h \to \infty ),则 ( f(x) ) 使用来自 ( y\_i ) 的值 ( x\_i ) 值 ( x )。在这两种情况下,核回归估计都为 ( y\_i ) 其 ( x\_i ) 值更接近给定点 ( x )。

c147ab0c06064d8d774bddf0767cf1ac.png

带宽。高斯核回归问题的权重 ( x = 0.3 ) 具有不同的带宽。

4.3 视觉直觉

为了理解核回归估计器,我们将看看该点的估计是如何形成的 ( x^* = 0.3 ) 使用不同的 bandwidth 参数值。

0dcb746083a8c46b8478c81c2a4bd275.png

核回归估计值 ( \hat{f}(0.3) ) 具有不同的带宽值。

请注意,估计值(由红色三角形表示)是使用 ( y\_i ) 值。在这种情况下,所有 ( y\_i ) 值具有非零权重,但许多权重实际上为零。对于可视化,灰色框表示相应带宽下 Gaussian 核下 99% 的区域。上面的示例显示了点的窗口 ( x^* = 0.3 ),但同样的想法也适用于其他点。要在不同的 ( x ) 值,我们只需将窗口沿 x 轴向下滑动,使其以新的 ( x ) 值,并相应地重新定义权重。

4.4 选择带宽

与该函数类似,该函数不提供任何用于选择 bandwidth 参数的数据驱动方法。因此,该函数的许多用户(在不知不觉中)使用默认的带宽值 loess ksmooth ( h = 0.5 ),它不能保证产生均值函数的合理估计 ( f(\cdot) )。请注意,R 的函数将问题参数化,以便“对内核进行缩放,以便它们的四分位数(被视为概率密度)处于 +/- 0.25 带宽”,因此该函数的_带宽_参数不是内核函数的标准差。ksmooth

以下函数提供了使用 GC
V 调整带宽参数的函数(使用 Gaussian 内核)的简单实现。请注意,此函数在 ksmooth ( r/n,r ) ( r/n,r ) 其中 ( r = \max(x\_i) - \min(x\_i) ) 是观测样本的范围。如果最佳 ( h ) 落在边界点上,即如果 ( \hat{h} = r/n ) 或 ( \hat{h} = r ),则搜索范围应向适当的方向扩展。此外,应该注意的是,对于大型数据样本,该函数将非常缓慢,因为它需要形成 ( ksmooth.gcv ) ( n \times n ) 每个 bandwidth 参数选择的 kernel matrix。

示例 1:收入的声望

5.1 数据概述

数据集包含 职业,以及该职业的平均收入。我们将使用非参数回归方法来探索声望和收入之间的关系。

首先,让我们加载数据并可视化收入 ( ( X ) ) 和声望 ( ( Y ))。

dfba00489413b4f5212f6d0c667a1cfd.png

注意:这种关系看起来是非线性的。对于收入低于 10 美元的职业,收入和声望之间存在很强的(正)线性关系。但是,对于收入在 ( $10K) 到 ( $25K ) 之间的职业,这种关系具有明显不同(减弱)的斜率。

5.2 分析和结果

注意:该模型的有效自由度对于局部回归估计器约为 3,对于核回归估计器的有效自由度约为 8。

b017c2682fd4dc6b1c7481df50acde70.png

从上图可以看出,GCV 调整的 LOESS 估计值表现最好(即提供拟合度和平滑度的最佳组合),CV 调整的局部平均值表现第二好,而 GCV 调整的核回归估计值表现最差。特别是,GCV 调整的核回归估计对收入和声望之间的关系产生了相当粗略/摇摆不定的估计。

示例 2:摩托车事故

6.1 数据概述

数据集包含 ( n = 133 ) 摩托车事故中记录的时间点对(以毫秒为单位)和观察到的头部加速度(以 G 为单位)。我们将使用非参数回归方法来探索时间和加速度之间的关系。

首先,让我们加载数据并可视化时间 ( ( X ) ) 和加速度 ( ( Y ))。

527bd311dd82abb47a788737f8b2bb94.png

注意:这种关系看起来是非线性的。头部加速度在 0-15 毫秒之间稳定,从大约 15-20 毫秒下降,从 20-30 毫秒上升,从 30-40 毫秒下降,然后开始稳定。

6.2 分析和结果

拟合局部平均、局部回归和内核回归。

注意:该模型的本地回归估计器的有效自由度约为 10.5,核回归估计器的有效自由度约为 20。

绘制结果

68ff52f7b83fe2487d4d98e276d77a58.png

从上图可以看出,GCV 调整的 LOESS 估计值表现最佳(即提供拟合和平滑度的最佳组合)。CV 调整的局部平均值太平滑,错过了 30 毫秒左右的峰值。GCV 调整的核回归估计值比局部平均值更适合数据,但当数据变得更嘈杂时(即,模拟事故发生后 30 毫秒或更长时间),它会产生相当粗略/波动的估计值。

74982b0d1e699a9bcae660582ac955d8.jpeg

本文中分析的数据、代码分享到会员群,扫描下面二维码即可加群! 

59e9e5818106e0149a554ea12dd2fe34.png

资料获取

在公众号后台回复“领资料”,可免费获取数据分析、机器学习、深度学习等学习资料。

84c2b380955afd7160ebb701589c4c27.png

点击文末“阅读原文”

获取全文完整代码数据资料。

本文选自《R语言非参数回归预测摩托车事故、收入数据:局部回归、核回归可视化》。

点击标题查阅往期内容

【视频讲解】非参数重采样bootstrap逻辑回归Logistic应用及模型差异Python实现

R语言非参数模型厘定保险费率:局部回归、广义相加模型GAM、样条回归

R语言贝叶斯非参数模型:密度估计、非参数化随机效应META分析心肌梗死数据

R语言非参数方法:使用核回归平滑估计和K-NN(K近邻算法)分类预测心脏病数据

R语言对巨灾风险下的再保险合同定价研究案例:广义线性模型和帕累托分布Pareto distributions分析

面板平滑转换回归(PSTR)分析案例实现

R语言时变面板平滑转换回归模型TV-PSTR分析债务水平对投资的影响

面板平滑转换回归(PSTR)分析案例实现

R语言自适应平滑样条回归分析

R语言时间序列数据指数平滑法分析交互式动态可视化

R语言中的广义线性模型(GLM)和广义相加模型(GAM):多元(平滑)回归分析保险资金投资组合信用风险敞口

R语言预测人口死亡率:用李·卡特(Lee-Carter)模型、非线性模型进行平滑估计

基于R统计软件的三次样条和平滑样条模型数据拟合及预测

R语言实现CNN(卷积神经网络)模型进行回归数据分析

R语言中的多项式回归、B样条曲线(B-spline Curves)回归

R语言泊松Poisson回归模型分析案例

在R语言中实现Logistic逻辑回归

R语言用多项式回归和ARIMA模型预测电力负荷时间序列数据

R语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测

R语言机器学习实战之多项式回归

R语言自适应平滑样条回归分析

R语言区间数据回归分析

R语言逻辑回归和泊松回归模型对发生交通事故概率建模

R语言线性回归和时间序列分析北京房价影响因素可视化案例

R语言惩罚logistic逻辑回归(LASSO,岭回归)高维变量选择的分类模型案例

R语言用标准最小二乘OLS,广义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分类

R语言实现CNN(卷积神经网络)模型进行回归数据分析

R语言中实现广义相加模型GAM和普通最小二乘(OLS)回归

R语言中使用非凸惩罚函数回归(SCAD、MCP)分析前列腺数据

【视频】R语言实现CNN(卷积神经网络)模型进行回归数据分析

R语言ISLR工资数据进行多项式回归和样条回归分析

R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型

R语言如何和何时使用glmnet岭回归

R语言基于线性回归的资本资产定价模型(CAPM)

Matlab马尔可夫区制转换动态回归模型估计GDP增长率

R语言MCMC:Metropolis-Hastings采样用于回归的贝叶斯估计

78076f3443cd6678fb240a347ffca94a.jpeg

99b8ed8ddb9ce43c4d788092f7b98586.png

c596c86906c08f7a14b058e0c4bbf2de.png

aec0333c1a1260d10a96d44ab1d5815b.jpeg

e651eec859dbbd1c2faa02ec5e7b1c66.png

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

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

相关文章

UE虚幻引擎云渲染汽车动画的优势!

在汽车广告和动画制作领域&#xff0c;虚幻引擎&#xff08;UE&#xff09;结合云渲染技术正掀起一场技术革命。这项技术以其高性能、成本效益和灵活性&#xff0c;为创作者提供了强大的工具&#xff0c;以实现更加逼真和高效的汽车动画制作。 一、为什么选择UE虚幻引擎制作汽车…

针对考研的C语言学习(定制化快速掌握重点3)

1.数组常见错误 数组传参实际传递的是数组的起始地址&#xff0c;若在函数中改变数组内容&#xff0c;数组本身也会发生变化 #include<stdio.h> void change_ch(char* str) {str[0] H; } int main() {char ch[] "hello";change_ch(ch);printf("%s\n&q…

【YashanDB知识库】YMP迁移oracle不兼容给用户授权高级包

本文转自YashanDB官网&#xff0c;具体内容请见https://www.yashandb.com/newsinfo/7441382.html?templateId1718516 【标题】YMP迁移oracle不兼容给用户授权高级包 【关键字】oracle迁移&#xff0c;高级包授权 【问题描述】迁移评估任务中&#xff0c;oracle迁移YashanDB…

衡石分析平台系统管理手册-功能配置之全局 CSS 设置

全局 CSS 设置​ 衡石系统提供了全局 CSS 功能。通过自定义全局 CSS 可以更加精细化控制页面视觉效果&#xff0c;例如可以通过 display:none CSS 规则来隐藏不需要展示的功能。 使用场景​ 全局 CSS 可以控制页面外观&#xff0c;常用于以下场景。 场景1&#xff1a;控制页…

Golang | Leetcode Golang题解之第438题找到字符串中所有字母异位词

题目&#xff1a; 题解&#xff1a; func findAnagrams(s, p string) (ans []int) {sLen, pLen : len(s), len(p)if sLen < pLen {return}count : [26]int{}for i, ch : range p {count[s[i]-a]count[ch-a]--}differ : 0for _, c : range count {if c ! 0 {differ}}if diff…

如何展开浏览器开发者模式的Fetch/XHR

说明&#xff1a;大多数程序员都用浏览器的F12&#xff0c;开发者模式查看接口&#xff0c;我也不例外。我常用下面这个选项&#xff0c;它会过滤掉掉其他文档、样式请求&#xff0c;只展示访问服务器的接口请求 有次&#xff0c;不知道点了什么&#xff0c;这个菜单消失找不…

Redis——缓存

什么是缓存&#xff1f; 缓存是计算机中一个经典的概念&#xff0c;其实本质就是将常用的数据放到访问速度快的地方&#xff0c;方便读取。 对于硬件的访问速度来说&#xff0c;通常情况如下&#xff1a; CPU寄存器 > 内存 > 硬盘 > 网路 但是对于计算机硬件来说&am…

李沐深度学习-多层感知机、模型选择、过拟合、欠拟合

3.8.1 隐藏层 多层感知机在单层神经网络的基础上引入了一到多个隐藏层&#xff08;hidden layer&#xff09;。隐藏层位于输入层和输出层之间。图3.3展示了一个多层感知机的神经网络图&#xff0c;它含有一个隐藏层&#xff0c;该层中有5个隐藏单元。 图3.3 带有隐藏层的多层感…

JavaSE篇之String类

1.字符串的构造 常用的有三种方法&#xff1a; 1.使用常量串构造 2.直接newString对象 3.使用字符数组进行构造 2.String对象的比较 2.1比较是否引用同一个对象 对于基本类型变量&#xff0c; 比较两个变量中存储的值是否相同。 对于引用类型变量&#xff0c;比较两个引用…

使用 MongoDB 在 Spring Boot 中构建安全的 RBAC 系统

介绍 您是否曾经构建过应用程序&#xff0c;然后突然意识到需要以更精细的方式管理用户访问权限&#xff1f;也许您已经硬编码了一些管理检查或在整个代码库中分散了权限逻辑。相信我&#xff0c;我经历过这种情况&#xff0c;维护起来并不好玩。 这就是基于角色的访问控制 (…

Unity3D地形系统一口气讲完!谢啦!!☆⌒(*^-゜)v

Unity 3D 地形系统概述 在三维游戏世界中&#xff0c;通常会将丰富多彩的游戏元素融合在一起&#xff0c;比如游戏中起伏的地形、郁郁葱葱的树木、蔚蓝的天空、、凶恶的猛兽等&#xff0c;营造出身临其境的游戏沉浸感&#xff0c;让玩家置身游戏世界&#xff0c;忘记现实。 地…

定时任务上云改造方案

优质博文&#xff1a;IT-BLOG-CN 一、Job单元化 什么Job需要单元化&#xff1a;所有会往单元化DB更新/删除/插入数据的Job都需要进行单元化改造。 什么是单元化DB 【1】指配置为DRC双向复制的DB&#xff1b; 【2】单元化的DB部署在多个Zone&#xff0c;每个Zone内的实例都会…

【含文档】基于Springboot+Vue的高校失物招领平台(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

物体实例分割,机器人拾取

物体实例分割是计算机视觉领域的一个关键任务&#xff0c;它旨在从图像中分割出每个独立物体&#xff0c;并且为每个物体实例提供一个独特的标识。这一任务不仅识别出图像中的物体&#xff0c;还能区分出多个同类物体的不同实例&#xff0c;例如在一张桌子上摆放的多个相同的杯…

『功能项目』宠物的攻击巨型化【80】

本章项目成果展示 我们打开上一篇79宠物的召唤跟随的项目&#xff0c; 本章要做的事情是实现在战斗中有几率触发宠物巨型化攻击将怪物击飞的效果 首先在主角预制体中增加隐藏的宠物巨型化 制作巨型化宠物的攻击效果 将该动画控制器放置在隐藏的巨型化宠物的动画控制器上 首先查…

新160个crackme - 065-Eternal Bliss

运行分析 选择验证方式&#xff0c;破解字符串标题提示为vb程序 PE分析 VB程序&#xff0c;32位&#xff0c;无壳 静态分析&动态调试 使用VB Decompiler进行分析&#xff0c;发现Command1_Click_403604为check按钮事件&#xff0c;需要使Me 1 CBool(expression) 将表达…

传输层协议 --- UDP

序言 在之前的文章 Socket 编程 中&#xff0c;我们只是简单的知道了怎么利用 UDP协议 或者是 TCP协议 来发送我们的数据&#xff0c;并且我们还知道 UDP 是不可靠的&#xff0c;TCP 是可靠的。但这是为什么呢&#xff1f;底层的构造和策略决定他们的属性&#xff01;这篇文章中…

从环境部署到开发实战:消息队列 RocketMQ

文章目录 一、消息队列简介1.1 什么是消息队列1.2 常见消息队列对比1.3 RockectMQ 核心概念1.4 RockectMQ 工作机制 &#xff08;★&#xff09; 二、RocketMQ 部署相关2.1 服务器单机部署2.2 管控台页面 三、RocketMQ 的基本使用3.1 入门案例3.2 消息发送方式3.2.1 同步消息3.…

微服务-流量染色

1. 功能目的 通过设置请求头的方式将http请求优先打到指定的服务上&#xff0c;为微服务开发调试工作提供便利 请求报文难模拟&#xff1a;可以直接在测试环境页面上操作&#xff0c;流量直接打到本地IDEA进行debug请求链路较长&#xff1a;本地开发无需启动所有服务&#xf…

前端常见算法题集

很久没练算法了&#xff0c;打算接下来一段时间每天坚持写题和写题解 这是一篇前端常用算法题集&#xff0c;题目从从简到难&#xff0c;编程语言主要为JavaScript&#xff0c;顺便练习和熟记js的各种方法... 目录 字符串类 1.字符串相加 字符串类 下图为js中常用的字符串方…