深度学习笔记: 最详尽解释R 平方 (R²)

news2024/11/25 22:39:55

欢迎收藏Star我的Machine Learning Blog:https://github.com/purepisces/Wenqing-Machine_Learning_Blog。如果收藏star, 有问题可以随时与我交流, 谢谢大家!

理解 R 平方 (R²)

什么是相关性 R?

  • 相关性测量两个定量变量(例如,重量和尺寸)之间关系的强度。
  • 接近 1 或 -1 的值表示关系强。
  • 接近 0 的值表示关系弱或无关系。

为什么 R² 重要?

  • R² 是一种类似于 R 的相关性指标,它测量关系的强度,但更易于解释。
  • 虽然 R = 0.7 可能看起来并不比 R = 0.5 强一倍,但 R² = 0.7 表现出来的效果确实是 R² = 0.5 的 1.4 倍。
  • R² 提供了一个直观而简单的计算,用于理解关系解释的变异比例。

R² 直接告诉我们模型解释的变异百分比,使我们更容易理解预测变量对结果的影响。例如,R² 为 0.49 表示模型解释了 49% 的变异,而 R² 为 0.25 表示模型解释了 25% 的变异。

例子:老鼠体重预测

  1. 初始数据绘图
    • 绘制老鼠体重(y 轴)与老鼠 ID(x 轴)的关系图。
    • 计算并绘制平均体重。
    • 计算方差,即从均值开始的平方差的总和。
      数据的变异性 = ∑ ( 老鼠 i 的体重 − 均值 ) 2 \text{数据的变异性} = \sum (\text{老鼠 i 的体重} - \text{均值})^2 数据的变异性=(老鼠 i 的体重均值)2
      各数据点之间的差异被平方,以便低于均值的点不会抵消高于均值的点。

  1. 按尺寸重新排序数据
    • 按尺寸重新排序老鼠,但不改变均值和方差。点与线之间的距离没有改变,只是它们的顺序变了。

  1. 通过拟合线更好地预测
    • 对尺寸-体重数据拟合一条线。
    • 使用这条线基于尺寸进行更准确的体重预测。

  1. 用 R² 量化改进
    • R 2 = ( V a r ( m e a n ) − V a r ( l i n e ) ) V a r ( m e a n ) R² = \frac{(Var(mean) - Var(line))}{Var(mean)} R2=Var(mean)(Var(mean)Var(line))
      R² 的取值范围从 0 到 1,值越高预测越好。


在这里插入图片描述
在这里插入图片描述

R² 的范围从 0 到 1,因为线周围的变异永远不会大于均值周围的变异,并且永远不会小于 0。这种划分也使得 R² 成为一个百分比。

  1. 例子
    • 高 R²(例如,0.81)表示关系强,如尺寸和体重。
    • 低 R²(例如,0.06)表示关系弱,如嗅探时间和体重。

R² 为 0.81 表示线周围的变异比均值周围的变异少 81%,或者尺寸/体重关系解释了总变异的 81%。这意味着数据中大部分的变异可以通过尺寸/体重关系来解释。

在另一个例子中,我们比较两个可能不相关的变量,即老鼠体重和嗅探岩石的时间。我们发现 R² = 0.06,因此线周围的变异比均值周围的变异少 6%,或者嗅探/体重关系解释了总变异的 6%。这意味着只有 6% 的变异可以通过这种关系来解释,表明相关性很弱。

解释 R²

  • 统计显著的 R² = 0.9:90% 的变异由这种关系解释。
  • 统计显著的 R² = 0.01:只有 1% 的变异由这种关系解释。

当有人说“统计显著的 R² 是 0.9”时,你可以想,“很好!两个变量之间的关系解释了数据中 90% 的变异!” 反之,如果 R² = 0.01,你可以想,“即使这种关系是显著的,但只解释了 1% 的变异;剩下的 99% 必须由其他因素解释。”

即使统计测试显示两个变量之间的关系在统计上是显著的,如果 R² 值非常低,这种关系在实际上的重要性可能很小。换句话说,统计显著性并不一定意味着这种关系在解释数据变异方面是有意义的或重要的。

与 R 的关系

  • R² 是 R 的平方。
  • 高 R(例如,0.9)的平方得出高 R²(例如,0.81)。
  • R² 提供了更清晰的比较,更容易理解(例如,R² 的 0.7² 比 0.5² 好两倍)。

当有人说“统计显著的 R 是 0.9”时,你可以想,“0.9 乘以 0.9 = 0.81。很好!两个变量之间的关系解释了数据中 81% 的变异!” 对于 R = 0.5,你可以想,“0.5 乘以 0.5 = 0.25。关系解释了数据中 25% 的变异。如果有一百万个其他因素解释剩下的 75%,那很好,如果只有一个因素,那就不好了。”

R² 比普通的 R 更容易解释。例如,R = 0.7 与 R = 0.5 比较:

  • R² = 0.7² = 0.49:49% 的原始变异被解释。
  • R² = 0.5² = 0.25:25% 的原始变异被解释。

有了 R²,很明显第一个相关性大约是第二个的两倍。

R 与解释的变异比例之间的关系是非线性的。R = 0.7 的相关性并不意味着它比 R = 0.5 好 1.4 倍。

将相关系数(R)平方得到 R² 使这种关系线性化,更直观地比较强度。

关键点

  • R² 表示由关系解释的变异百分比。
  • R² 不表示相关性的方向。
  • 将 R 的值平方得到 R² 以便更容易理解。

R² 不表示相关性的方向,因为平方后的数值永远不会是负数。如果相关性的方向不明显,你可以说,“两个变量正相关(或负相关),R² = …”

R² 的主要思想

  • R² 是由两个变量之间关系解释的变异百分比。
  • 如果有人给你一个 R 的值,将其平方以理解解释的变异百分比。

理解为什么 Var(line) ≤ Var(mean)

方差和线性回归的概念

均值周围的方差 (Var(mean))

方差测量每个数据点偏离数据集均值的平均平方偏差。方差的公式为:

Var(mean) = 1 N ∑ i = 1 N ( y i − y ˉ ) 2 \text{Var(mean)} = \frac{1}{N} \sum_{i=1}^N (y_i - \bar{y})^2 Var(mean)=N1i=1N(yiyˉ)2

其中, y i y_i yi 是数据点, y ˉ \bar{y} yˉ 是均值, N N N 是数据点的数量。

拟合线周围的方差 (Var(line))

在线性回归中,我们拟合一条线,以最小化实际数据点与预测值(即残差)之间的平方差之和。拟合线周围的方差(残差平方和)的公式为:

Var(line) = 1 N ∑ i = 1 N ( y i − y ^ i ) 2 \text{Var(line)} = \frac{1}{N} \sum_{i=1}^N (y_i - \hat{y}_i)^2 Var(line)=N1i=1N(yiy^i)2

其中, y ^ i \hat{y}_i y^i 是回归线的预测值。

为什么 Var(line) ≤ Var(mean)

线性回归最小化残差

线性回归的目标是找到最小化残差平方和(观测值与预测值之差)的线。这一过程称为“最小二乘法”。通过最小化这些残差,拟合线周围的方差(Var(line))比均值周围的方差(Var(mean))要小。

总方差的分解

数据的总方差 (Var(mean)) 可以分解为两部分:由回归模型解释的方差(解释方差)和模型未解释的方差(残差方差)。数学上表示为:

Total Variance (Var(mean)) = Explained Variance + Residual Variance (Var(line)) \text{Total Variance (Var(mean))} = \text{Explained Variance} + \text{Residual Variance (Var(line))} Total Variance (Var(mean))=Explained Variance+Residual Variance (Var(line))

由于解释方差和残差方差都是非负的,残差方差(Var(line))必须小于或等于总方差(Var(mean))。

视觉直观

均值周围的变异

如果你考虑均值线(在因变量均值处的一条水平线),每个数据点与这个均值线的距离(平方差)相对较大。

拟合线周围的变异

当你拟合一条回归线时,你会调整这条线,使其尽可能接近所有数据点,从而最小化平方差(残差)。与均值线相比,这减少了总体距离。

使用统计属性的正式证明

平方和

总平方和 (SST) 测量因变量的总方差,定义为:

S S T = ∑ ( y i − y ˉ ) 2 SST = \sum (y_i - \bar{y})^2 SST=(yiyˉ)2

残差平方和 (SSR) 测量模型未解释的方差:

S S R = ∑ ( y i − y ^ ) 2 SSR = \sum (y_i - \hat{y})^2 SSR=(yiy^)2

关系

解释平方和 (SSE) 测量模型解释的方差:

S S E = ∑ ( y ^ i − y ˉ ) 2 SSE = \sum (\hat{y}_i - \bar{y})^2 SSE=(y^iyˉ)2

根据定义:

S S T = S S E + S S R SST = SSE + SSR SST=SSE+SSR

结论

由于线性回归模型旨在最小化残差方差(SSR 或 Var(line)),因此拟合线周围的方差(Var(line))总是小于或等于均值周围的方差(Var(mean))。这确保了拟合线相对于仅使用均值作为预测器提供了更好或相同的拟合。

因此,回归模型提供的拟合改进(通过 R² 衡量)表示模型解释了多少总方差,其中 Var(line) 是此比较中的关键组成部分。

示例:通过尺寸预测老鼠体重

假设我们有 5 只老鼠的数据,其中我们测量它们的尺寸(自变量,X)和体重(因变量,Y)。以下是数据:

鼠标 ID尺寸 (X)体重 (Y)
11015
22025
33035
44045
55055

第一步:计算 Y 的均值

Y ˉ = 15 + 25 + 35 + 45 + 55 5 = 175 5 = 35 \bar{Y} = \frac{15 + 25 + 35 + 45 + 55}{5} = \frac{175}{5} = 35 Yˉ=515+25+35+45+55=5175=35

第二步:计算总平方和 (SST)

S S T = ∑ ( Y i − Y ˉ ) 2 = ( 15 − 35 ) 2 + ( 25 − 35 ) 2 + ( 35 − 35 ) 2 + ( 45 − 35 ) 2 + ( 55 − 35 ) 2 SST = \sum (Y_i - \bar{Y})^2 = (15 - 35)^2 + (25 - 35)^2 + (35 - 35)^2 + (45 - 35)^2 + (55 - 35)^2 SST=(YiYˉ)2=(1535)2+(2535)2+(3535)2+(4535)2+(5535)2

S S T = ( − 20 ) 2 + ( − 10 ) 2 + 0 2 + 1 0 2 + 2 0 2 = 400 + 100 + 0 + 100 + 400 = 1000 SST = (-20)^2 + (-10)^2 + 0^2 + 10^2 + 20^2 = 400 + 100 + 0 + 100 + 400 = 1000 SST=(20)2+(10)2+02+102+202=400+100+0+100+400=1000

第三步:计算均值周围的方差 (Var(mean))

Var(mean) = S S T N = 1000 5 = 200 \text{Var(mean)} = \frac{SST}{N} = \frac{1000}{5} = 200 Var(mean)=NSST=51000=200

第四步:拟合线性回归线

假设拟合的回归线为:

Y ^ = 10 + 0.9 X \hat{Y} = 10 + 0.9X Y^=10+0.9X

第五步:计算预测值 ((\hat{Y}))

鼠标 ID尺寸 (X)体重 (Y)预测体重 ((\hat{Y}))
1101510 + 0.9(10) = 19
2202510 + 0.9(20) = 28
3303510 + 0.9(30) = 37
4404510 + 0.9(40) = 46
5505510 + 0.9(50) = 55

第六步:计算残差平方和 (SSR)

S S R = ∑ ( Y i − Y ^ ) 2 = ( 15 − 19 ) 2 + ( 25 − 28 ) 2 + ( 35 − 37 ) 2 + ( 45 − 46 ) 2 + ( 55 − 55 ) 2 SSR = \sum (Y_i - \hat{Y})^2 = (15 - 19)^2 + (25 - 28)^2 + (35 - 37)^2 + (45 - 46)^2 + (55 - 55)^2 SSR=(YiY^)2=(1519)2+(2528)2+(3537)2+(4546)2+(5555)2

S S R = ( − 4 ) 2 + ( − 3 ) 2 + ( − 2 ) 2 + ( − 1 ) 2 + 0 2 = 16 + 9 + 4 + 1 + 0 = 30 SSR = (-4)^2 + (-3)^2 + (-2)^2 + (-1)^2 + 0^2 = 16 + 9 + 4 + 1 + 0 = 30 SSR=(4)2+(3)2+(2)2+(1)2+02=16+9+4+1+0=30

第七步:计算拟合线周围的方差 (Var(line))

Var(line) = S S R N = 30 5 = 6 \text{Var(line)} = \frac{SSR}{N} = \frac{30}{5} = 6 Var(line)=NSSR=530=6

第八步:使用公式计算 R²

R 2 = Var(mean) − Var(line) Var(mean) R^2 = \frac{\text{Var(mean)} - \text{Var(line)}}{\text{Var(mean)}} R2=Var(mean)Var(mean)Var(line)

R 2 = 200 − 6 200 = 194 200 = 0.97 R^2 = \frac{200 - 6}{200} = \frac{194}{200} = 0.97 R2=2002006=200194=0.97

解释

  • R² 值:R² 值为 0.97。
  • 含义:这意味着 97% 的老鼠体重变异可以通过鼠标尺寸来解释。只有 3% 的变异是由模型未解释的其他因素造成的。

总结

在这个例子中,高 R² 值(0.97)表明鼠标的尺寸和体重之间存在很强的线性关系。这意味着我们的线性回归模型在根据鼠标尺寸解释其体重的变异性方面表现非常好。

补充证明 S S T = S S E + S S R SST = SSE + SSR SST=SSE+SSR

当线性回归中包含截距(残差和为零)时,我们可以证明:

S S T = S S E + S S R SST = SSE + SSR SST=SSE+SSR

定义

  • 总平方和(SST):

    S S T = ∑ i = 1 n ( y i − y ˉ ) 2 SST = \sum_{i=1}^{n} (y_i - \bar{y})^2 SST=i=1n(yiyˉ)2

  • 解释平方和(SSE):

S S E = ∑ i = 1 n ( y ^ i − y ˉ ) 2 SSE = \sum_{i=1}^{n} (\hat{y}_i - \bar{y})^2 SSE=i=1n(y^iyˉ)2

  • 残差平方和(SSR):

    S S R = ∑ i = 1 n ( y i − y ^ i ) 2 SSR = \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 SSR=i=1n(yiy^i)2

展开 SST

S S T = ∑ i = 1 n ( y i − y ˉ ) 2 SST = \sum_{i=1}^{n} (y_i - \bar{y})^2 SST=i=1n(yiyˉ)2

y i − y ˉ y_i - \bar{y} yiyˉ 分解为 ( y i − y ^ i ) + ( y ^ i − y ˉ ) (y_i - \hat{y}_i) + (\hat{y}_i - \bar{y}) (yiy^i)+(y^iyˉ):

S S T = ∑ i = 1 n ( y i − y ^ i + y ^ i − y ˉ ) 2 SST = \sum_{i=1}^{n} (y_i - \hat{y}_i + \hat{y}_i - \bar{y})^2 SST=i=1n(yiy^i+y^iyˉ)2

展开右侧:

S S T = ∑ i = 1 n ( y i − y ^ i ) 2 + ∑ i = 1 n ( y ^ i − y ˉ ) 2 + 2 ∑ i = 1 n ( y i − y ^ i ) ( y ^ i − y ˉ ) SST = \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 + \sum_{i=1}^{n} (\hat{y}_i - \bar{y})^2 + 2\sum_{i=1}^{n} (y_i - \hat{y}_i)(\hat{y}_i - \bar{y}) SST=i=1n(yiy^i)2+i=1n(y^iyˉ)2+2i=1n(yiy^i)(y^iyˉ)

因此:

S S T = S S R + S S E + 2 ∑ i = 1 n ( y i − y ^ i ) ( y ^ i − y ˉ ) SST = SSR + SSE + 2 \sum_{i=1}^{n} (y_i - \hat{y}_i)(\hat{y}_i - \bar{y}) SST=SSR+SSE+2i=1n(yiy^i)(y^iyˉ)

要证明最后一部分等于0,我们需要证明:

∑ i = 1 n ( y i − y ^ i ) ( y ^ i − y ˉ ) = 0 \sum_{i=1}^{n} (y_i - \hat{y}_i)(\hat{y}_i - \bar{y}) = 0 i=1n(yiy^i)(y^iyˉ)=0

替换 y ^ i = β 0 + β 1 x i \hat{y}_i = \beta_0 + \beta_1 x_i y^i=β0+β1xi:

∑ i = 1 n ( y i − y ^ i ) ( y ^ i − y ˉ ) = ∑ i = 1 n ( y i − β 0 − β 1 x i ) ( β 0 + β 1 x i − y ˉ ) \sum_{i=1}^{n} (y_i - \hat{y}_i)(\hat{y}_i - \bar{y}) = \sum_{i=1}^{n} (y_i - \beta_0 - \beta_1 x_i)(\beta_0 + \beta_1 x_i - \bar{y}) i=1n(yiy^i)(y^iyˉ)=i=1n(yiβ0β1xi)(β0+β1xiyˉ)

这可以分解为:

( β 0 − y ˉ ) ∑ i = 1 n ( y i − β 0 − β 1 x i ) + β 1 ∑ i = 1 n ( y i − β 0 − β 1 x i ) x i (\beta_0 - \bar{y})\sum_{i=1}^{n} (y_i - \beta_0 - \beta_1 x_i) + \beta_1 \sum_{i=1}^{n} (y_i - \beta_0 - \beta_1 x_i)x_i (β0yˉ)i=1n(yiβ0β1xi)+β1i=1n(yiβ0β1xi)xi

最小二乘回归

在最小二乘回归中,残差平方和被最小化:

S S R = ∑ i = 1 n ( y i − y ^ i ) 2 = ∑ i = 1 n ( y i − β 0 − β 1 x i ) 2 SSR = \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 = \sum_{i=1}^{n} (y_i - \beta_0 - \beta_1 x_i)^2 SSR=i=1n(yiy^i)2=i=1n(yiβ0β1xi)2

β 0 \beta_0 β0 取部分导数并设为零:

∂ S S R ∂ β 0 = ∑ i = 1 n 2 ( y i − β 0 − β 1 x i ) ⋅ 1 = 0 \frac{\partial SSR}{\partial \beta_0} = \sum_{i=1}^{n} 2(y_i - \beta_0 - \beta_1 x_i) \cdot 1 = 0 β0SSR=i=1n2(yiβ0β1xi)1=0

所以:

∑ i = 1 n ( y i − β 0 − β 1 x i ) = 0 \sum_{i=1}^{n} (y_i - \beta_0 - \beta_1 x_i) = 0 i=1n(yiβ0β1xi)=0

β 1 \beta_1 β1 取部分导数并设为零:

∂ S S R ∂ β 1 = ∑ i = 1 n 2 ( y i − β 0 − β 1 x i ) ⋅ x i = 0 \frac{\partial SSR}{\partial \beta_1} = \sum_{i=1}^{n} 2(y_i - \beta_0 - \beta_1 x_i) \cdot x_i = 0 β1SSR=i=1n2(yiβ0β1xi)xi=0

所以:

∑ i = 1 n ( y i − β 0 − β 1 x i ) x i = 0 \sum_{i=1}^{n} (y_i - \beta_0 - \beta_1 x_i)x_i = 0 i=1n(yiβ0β1xi)xi=0

因此:

∑ i = 1 n ( y i − y ^ i ) ( y ^ i − y ˉ ) = ( β 0 − y ˉ ) ∑ i = 1 n ( y i − β 0 − β 1 x i ) + β 1 ∑ i = 1 n ( y i − β 0 − β 1 x i ) x i = 0 \sum_{i=1}^{n} (y_i - \hat{y}_i)(\hat{y}_i - \bar{y}) = (\beta_0 - \bar{y})\sum_{i=1}^{n} (y_i - \beta_0 - \beta_1 x_i) + \beta_1 \sum_{i=1}^{n} (y_i - \beta_0 - \beta_1 x_i)x_i = 0 i=1n(yiy^i)(y^iyˉ)=(β0yˉ)i=1n(yiβ0β1xi)+β1i=1n(yiβ0β1xi)xi=0

因此:

S S T = S S R + S S E + 2 ∑ i = 1 n ( y i − y ^ i ) ( y ^ i − y ˉ ) = S S E + S S R SST = SSR + SSE + 2 \sum_{i=1}^{n} (y_i - \hat{y}_i)(\hat{y}_i - \bar{y}) = SSE + SSR SST=SSR+SSE+2i=1n(yiy^i)(y^iyˉ)=SSE+SSR

参考:

  • YouTube 视频

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

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

相关文章

iOS shouldRecognizeSimultaneouslyWithGestureRecognizer 调用机制探索

shouldRecognizeSimultaneouslyWithGestureRecognizer 经常会看到,但是一直没有弄清楚其中的原理和运行机制,今天专门研究下 其运行规律 我们准备三个视图,如下,红色的是绿色视图的父视图,绿色视图 是蓝色视图的父视图…

layui在表格中嵌入上传按钮,并修改上传进度条

当需要在表格中添加上传文件按钮,并不需要弹出填写表单的框的时候,需要在layui中,用按钮触发文件选择 有一点需要说明的是,layui定义table并不是在定义的标签中渲染,而是在紧接着的标签中渲染,所以要获取实…

Unity WebGL项目问题记录

一、资源优化 可通过转换工具配套提供的资源优化工具,将游戏内纹理资源针对webgl导出做优化。 工具入口: 工具介绍 Texture 搜索规则介绍 已开启MipMap: 搜索已开启了MipMap的纹理。 NPOT: 搜索非POT图片。 isReadable: 搜索已开启readable纹理。 …

为什么有的手机卡没有语音功能呢?

大家好,今天这篇文章为大家介绍一下,无通话功能的手机卡, 在网上申请过手机卡的朋友应该都知道,现在有这么一种手机卡,虽然是运营商推出的正规号卡,但是却屏蔽了通话功能,你知道这是为什么吗&am…

第六节:如何解决@ComponentScan只能扫描当前包及子包(自学Spring boot 3.x的第一天)

大家好,我是网创有方,继上节咱们使用了Component和ComponentScan的方法实现了获取IOC容器中的Bean,但是存在一个问题,就是必须把AppConfig和要扫描的bean类放在同一个目录下,这样就导致了AppConfig类和bean类在同一个目…

T4打卡 学习笔记

所用环境 ● 语言环境:Python3.11 ● 编译器:jupyter notebook ● 深度学习框架:TensorFlow2.16.1 ● 显卡(GPU):NVIDIA GeForce RTX 2070 设置GPU from tensorflow import keras from tensorflow.keras…

Dahlia Hart: Stylized Casual Character(休闲角色模型)

此包包含两个发型和两个服装,每个都有多种颜色选择。每个发型都适合与物理资源一起使用,并包含各种表情和音素混合形状。 下载:​​Unity资源商店链接资源下载链接 效果图:

自适应IT互联网营销企业网站pbootcms模板

模板介绍 一款蓝色自适应IT互联网营销企业网站pbootcms模板,该模板采用响应式设计,可自适应手机端,适合一切网络技术公司、互联网IT行业,源码下载,为您提供了便捷哦。 模板截图 源码下载 自适应IT互联网营销企业网站…

C++精解【9】

文章目录 大整数GMP概述GMP安装 [cygwin](https://cygwin.com/install.html)安装 gmpexample Eigen基本属性和运算 大整数GMP 概述 GMP GMP是一个用于任意精度算术的免费库,可对有符号整数、有理数和浮点数进行操作。除了运行GMP的机器的可用内存所暗示的精度外&…

【建设方案】工单系统建设方案(Word原件)

工单管理系统解决方案 1、工单创建:根据告警信息创建工单。 2、工单管理:列表形式展示所有工单信息及进度状态。 3、工单处理:对接收的工单进行处理反馈。 4、工单催办:根据工单时效自动发送工单催办消息通知。 5、工单归档&#…

鲲鹏arm服务器部署paddleOCR

1. 部署环境信息查看 1.1 操作系统 $ cat /etc/os-release PRETTY_NAME"UnionTech OS Server 20" NAME"UnionTech OS Server 20" VERSION_ID"20" VERSION"20" ID"uos" PLATFORM_ID"platform:uel20" HOME_URL&q…

数据结构与算法笔记:高级篇 - 搜索:如何用 A* 搜索算法实现游戏中的寻路功能?

概述 魔兽世界、仙剑奇侠传这类 MMRPG 游戏,不知道你玩过没有?在这些游戏中,有一个非常重要的功能,那就是任务角色自动寻路。当任务处于游戏地图中的某个位置时,我们用鼠标点击另外一个相对较远的位置,任务…

Java学习 - 布隆过滤器

前置需求 需求 已经有50亿个电话号码,现在给出10万个电话号码,如何快速准确地判断这些电话号码是否已经存在? 参考方案 通过数据库查询:比如MySQL,性能不行,速度太慢将数据先放进内存:50亿*8字…

用pycharm进行python爬虫的步骤

使用 pycharm 进行 python 爬虫的步骤:下载并安装 pycharm。创建一个新项目。安装 requests 和 beautifulsoup 库。编写爬虫脚本,包括获取页面内容、解析 html 和提取数据的代码。运行爬虫脚本。保存和处理提取到的数据。 用 PyCharm 进行 Python 爬虫的…

机器人控制系列教程之Simulink中模型搭建(1)

机器人模型获取 接上期:机器人控制系列教程之控制理论概述,文中详细讲解了如何通过Solidworks软件导出URDF格式的文件。文末提到了若需要将其导入到Simulink中可在命令行中输入smimport(urdf/S_Robot_urdf.urdf),MATLAB将自动打开Simulink以…

TCP单进程循环服务器程序与单进程客户端程序

实验目的 理解并掌握以下内容: 网络进程标识(即套接字地址)在Linux中的数据结构与地址转换函数。网络字节序与主机字节序的定义、转换以及相关函数在网络编程中的应用。数据结构内存对齐的基本规则,以及基于数据结构构建PDU的基本方法。TCP单进程循环服务器与单进程客户端的…

【ai】ubuntu18.04 找不到 nvcc --version问题

nvcc --version显示command not found问题 这个是cuda 库: windows安装了12.5 : 参考大神:解决nvcc --version显示command not found问题 原文链接:https://blog.csdn.net/Flying_sfeng/article/details/103343813 /usr/local/cuda/lib64 与 /usr/local/cuda-11.3/lib64 完…

【机器学习300问】133、什么是降维?有哪些降维的方法?

假如你有一本非常厚的书,每一章代表一个特征维度,而书中的故事(数据点)在每个章节(维度)都有详细的描述。但是,读者(模型)发现很难理解和记忆这个复杂的故事,…

视频监控业务平台LntonCVS国标视频综合管理平台功能及技术优势

随着安防行业的快速进步,传统的视频监控平台正在与先进的技术和互联网技术融合,包括5G通信、GIS、大数据、云计算、边缘计算、AI识别、智能分析和视频直播等。这些技术的整合形成了综合性视频监控管理平台,具备集中管理、多级联网共享、互联互…

在 UBUNTU 22.04 上逐步构建 Postal SMTP 服务器

构建 Postal SMTP 服务器来发送批量电子邮件是电子邮件营销人员的不错选择。Postal 功能非常强大,并拥有大量开发人员的支持。它是一个用 JavaScript 和 Ruby 编写的开源邮件服务器脚本。它可用于构建内部 SMTP 服务器,就像 Mailgun、Sendgrid、Mailchim…