勘探开发人工智能技术:机器学习(2)

news2024/11/22 16:53:51

0 提纲

3.1 k k k 近邻算法
3.2 决策树
3.3 k k kMeans
3.4 如何定义机器学习问题
3.5 线性回归

1 k k k 近邻算法

开卷考试, 在桌上堆的资料越多, 越是 “见多识广”.

1.1 核心思想

具有讽刺意味的是: 机器学习最基本的算法居然是不学习, 也称为惰性学习 (lazy learning).
k k kNN ( k k k nearest neighbors) 通过计算样本间的距离 (相似度) 来确定待预测样本应与哪些训练样本的标签保持一致.

为了应对一场考试, 我们可以不学习, 而在考场上去翻书.
是的, 在解决实际问题时, 完全可以是开卷考试.

例子: 上午来了 60 个就诊者, 根据他们的各项检测指标 (即数据), 主治医生给出了诊断结论 (如是否患病, 以及患哪种病). 实习医生只是用小本本把带标签数据记录下来, 并没往心里去.

下午来了 1 个就诊者 A, 实习医生将他的检测指标与上午 60 个就诊者的数据逐一比对, 并找出 k k k = 3 个最相似的. 根据这 k k k 个就诊者的情况, 就可以对 A 的患病情况进行预测 (例如, 他们都没患病, 就预测 A 也没病).

这种方式极度简单, 但揭示了人类认识世界的一个本质而有效的思想: 根据相似性进行预测.

人们常说“见多识广”, 本质上就是大脑内存储的样本多, 就可以对新样本进行准确的判断.大医院的医生更靠谱, 一些小医院所说的疑难杂症, 对他们而言可能是天天见的病例. 因此, 在学习更多的算法之后, 仍然需要记住一句话: 永远不要小瞧 k k kNN. 你很难找到一种算法在随机选择的 100 个数据集上完美地打败它.

前段时间热炒的大数据概念, 其中一个思想就是: 如果训练数据的量足够大, 那么我们只需要用很简单方法 (如 k k kNN) 即可. 假设一个实习生见到的不是 60 个样本, 而是 1 亿个样本, 那么他的判断应该可以达到惊人的准确性.
西瓜书上也说了, 理论上可以证明, 当样本量足够大时, k k kNN 的误差不超过贝叶斯误差 (即理论最大误差) 的 2 倍.

1.2 参数选择

k k k 是一个需要调整的参数.
如果是二分类问题, 一般将其设置为奇数, 方便投票.
要知道 k k k 设置为多少合适, 可以使用验证集.
在这里插入图片描述

1.3 距离度量

距离公式的选择,比如欧几里得距离:
d ( x , y ) = ( x 1 − y 1 ) 2 + ( x 2 − y 2 ) 2 + ⋯ + ( x n − y n ) 2 = ∑ i − 1 n ( x i − y i ) 2 d(x, y)=\sqrt{\left(x_{1}-y_{1}\right)^{2}+\left(x_{2}-y_{2}\right)^{2}+\cdots+\left(x_{n}-y_{n}\right)^{2}}=\sqrt{\sum_{i-1}^{n}\left(x_{i}-y_{i}\right)^{2}} d(x,y)=(x1y1)2+(x2y2)2++(xnyn)2 =i1n(xiyi)2
假设就诊者 x 1 x_1 x1 x 2 x_2 x2的 3 项检测指标值分别为 [ 0.3 , 1.7 , 380 ] 和 [ 0.25 , 1.9 , 400 ], 则它们的欧氏距离为:
d ( x 1 , x 2 ) = ( 0.3 − 0.25 ) 2 + ( 1.7 − 1.9 ) 2 + ( 380 − 400 ) 2 d(x_1, x_2)=\sqrt{\left(0.3-0.25\right)^{2}+\left(1.7-1.9\right)^{2} +\left(380-400\right)^{2}} d(x1,x2)=(0.30.25)2+(1.71.9)2+(380400)2
曼哈顿距离为:
d ( x 1 , x 2 ) = ∣ 0.3 − 0.25 ∣ + ∣ 1.7 − 1.9 ∣ + ∣ 380 − 400 ∣ d(x_1, x_2)=\left|0.3-0.25\right|+\left|1.7-1.9\right| +\left|380-400\right| d(x1,x2)=0.30.25+1.71.9+380400

1.4 主要缺点


试想别人学习到知识, 考试的时候刷刷地做题, 而你要一页页地翻书, 速度就不是一个量级的了.
为了缓解这个问题, 可以先把 10,000 条训练数据聚为 50 个簇, 每簇约 200 个样本 (聚类问题), 并获得这些簇中心点. 进行比对的时候, 先确定与哪个簇中心最近, 然后再在这个簇中心找邻居. 这样就可以把 10,000 次对比降为约 50 + 200 次.

1.5 归一化

从 上面的距离公式可以看出, 由于最后一个指标的值比较大, 前面两个指标对距离的贡献几乎可以忽略不计. 甚至这种指标值大小是由单位所导致的 (如毫升与升).
为消除不同指标取值范围的影响, 可使用归一化, 即所有指标均取 [ 0 , 1 ] [0, 1][0,1] 区间的值. 例如, 第 3 项指标的最大值是 500, 最小值是 100, 则数据 380 归一化变为:
380 − 100 500 − 100 = 280 400 = 0.7 \frac{380-100}{500-100} = \frac{280}{400} = 0.7 500100380100=400280=0.7

1.6 度量学习

归一化还是会引入新的问题: 认为所有的指标同等重要. 在现实应该中, 应该为每个指标赋予一定的权值 w w w, 并使得该指标的取值范围成为 [ 0 , w ] [0, w] [0,w].
相应的权值可以从数据中学习到. 这就是度量学习的初衷.

1.7 常见误区

  • 小瞧 k k kNN, 觉得它过于简单.
  • 没有认识到 k k kNN 正是人类认识物体的基本方式.
  • 不知道 k k kNN 可以做回归 (把邻居的实数型标签值取平均即可).

1.8 例子

2 决策树

将 “如果-那么” 组织成决策树, 它是人类最容易理解与传授的知识.

2.1 结构

决策树是一种与人类思维一致, 可解释的模型.
人类的很多知识以决策规则的形式存储:

  • 如果今天是阴天 (outlook = overcast), 就去打球.
  • 如果今天出太阳 (outlook = sunny) 而且湿度不高于 70% (humidity ≤ 70), 就去打球.
  • 如果今天出太阳 (outlook = sunny) 而且湿度高于 70% (humidity > 70), 就不去打球.

将这些规则组建出一棵树的样子:
在这里插入图片描述

2.2 优势

直观, 易于理解, 易于传授: 学生会迅速掌握这棵树.
相比于决策规则集合, 决策树的优点是没有死角: 任何一种情况都被覆盖.
与前面的 k k kNN 相比, 它是一个真正的模型 (model), 预测阶段脱离了训练数据.
对于机器而言, 使用决策树进行预测非常迅速, 任何新的实例, 都对应于从树根走到某个叶节点的一条路径. 这种路径的长度通常不超过 10.

2.3 原理

人为可以构建决策树, 这就是专家知识, 但它不属于我们重点讨论的内容.
从数据中构建出决策树, 才是机器学习的内容.
决策树的构建过程, 实际上是一个不完全归纳 (特殊到一般) 的过程. 为学习到图 1 所示的决策树, 只用了 14 个样本. 但这棵决策树所覆盖的可能情况, 远远超过了 14. outlook 有 3种情况, humidity 有 100 种情况, rain 有 2种情况, windy 有 2 种情况, 所以总共是 3 × 100 × 2 × 2 = 1200 3 × 100 × 2 × 2 = 1200 3×100×2×2=1200 种情况.
决策树构建的原则是: 越小越好, 即节点树越少越好. 这是基于奥克姆剃刀 (Occam’s razor) 原理.

2.4 构建方法

穷举法. 由于数据量比较大, 一般不使用这种方法.
启发式方法. 如基于信息熵、基于基尼指数.

  • ID3 适用于枚举型数据, 使用了信息熵 (条件信息熵之差称为信息增益).
  • 对于实数型数据, 则使用 C4.5.
  • 在绝大多数情况下, ID3 可以获得最小的决策树.
  • 在 2000 年前, 决策树火得一蹋糊涂.

剪枝. 如果一棵决策树使用一张 A4 纸都画不下, 就失去了泛化能力. 这时候需要剪枝. 例如, 在一个节点处, 有 100 个正样本和 1 个负样本, 虽然可以增加一个属性将它们分开, 但最好不要增加这个属性, 这样节点至少节约了一个.
在这里插入图片描述
常规的决策树, 其分割面都垂直于相应特征的坐标轴.
有时候想同时考虑多个属性组合而成 (温度 + 湿度) 的新属性, 可以使用 Oblique decision tree (斜决策树),也称为多变量决策树.
在这里插入图片描述
在这里插入图片描述

3 k k kMeans

适用于球形数据, 即每个数据点到其所在簇的中心都不远.

3.1 基本思想

k k kMeans 是数据分布未知时最合适的聚类算法.

  • 最大化簇的内聚性 (即同一簇的点距离较近), 最小化簇间的耦合性 (即不同簇的点距离较远).
  • 其优化目标可以写为:
    min ⁡ ∑ i d ( x i , c ( x i ) ) (1) \min \sum_i d(x_i, c(x_i)) \tag1 minid(xi,c(xi))(1)
  • 其中 c ( x i ) c(x_i) c(xi) 是第 i i i 个对象 x i x_i xi所处的簇的中心 (即将该簇所有点的特征值取平均获得的虚拟中心).

在这里插入图片描述

3.2 算法

Step 1. (确定老大) 随机选择 k k k个点作为中心点.
Step 2. (分派别) 对于任意对象, 计算它到这 k k k个点的距离, 离谁最近, 就与它属于同一簇.
Step 3. (重新选择老大) 每个簇求虚拟中心, 将其作为老大.
Step 4. (判断是否收敛) 如果本轮的中心点与上一轮的中心点相同, 则结束; 否则转 Step 2.

在这里插入图片描述

3.3 算法特点

k k kNN 的共同点在于, 都使用某个距离度量.
涉及迭代, 因此比 k k kNN 复杂.
初始点的选择会影响最终的结果. 很可能只收敛到局部最优解.
适合"球型"数据. 即每一簇从三维的角度来看都像一个球. 而并不适合于有较多离群点的数据. 所谓离群点, 可以认为是指离所有聚类中心的都挺远的数据点. 它会对 k k kMeans 的重心计算产生较大影响.
并不是在所有的数据集上, 都能很快收敛. 我试过的数据中, 有 50 轮都未收敛的, 干脆就凑合了.

3.4 参数设置与距离度量

只有一个 k k k.
显然, k k k 越大, (1) 式的值就越小. 确定 k k k 值多大合适, 有可能比确定如何聚类更困难.
距离度量参见 k k kNN. 这方面两个算法确实相同.

3.5 简单改进

删除离群点.
多次初始化聚类中心点, 选择 (1) 式最小化那个. 当数据集不大的时候, 局部最优解的个数并不多.

3.6 常见误区

不知道 k k kMeans 是有优化目标的 (反正我初学的时候就不知道).
不知道 k k kMeans 仅保证局部最优.
小瞧了 k k kMeans 的适应性 (与小瞧 k k kNN 同理).

3.7 例子

4 如何定义机器学习问题

输入、输出、优化目标、约束条件, 不能用这个范式抽象的实际问题, 几乎无法使用机器学习解决.

4.1 机器学习问题定义的模式

做研究应该以问题为导向. 机器学习问题定义清楚了, 才能保证在解决它的过程中不出大的偏差.
多数机器学习问题可以按照如下约束满足问题 (Constraint Satisfaction Problem) 进行定义:

  • 输入.
  • 输出.
  • 优化目标.
  • 约束条件.

看上去平平无奇. 只有你自己去面对具体的问题, 才会知道是否思路清晰, 心如磐石.

4.2 例子1:最优决策树构建

  • 输入: 结构化数据, 其中特征均为枚举型.
  • 输出: 决策树.
  • 优化目标: 最小化叶节点数量.
  • 约束条件: 与训练集的所有数据相容, 即在训练数据上的分类准确率为 100%.

有些训练数据本身有冲突对象, 即特征相同 (检测指标相同), 但标签值不同 (有的患病, 有的不患病), 这涉及数据的不确定性. 这时可以把约束条件改为优化目标, 即最大化在训练数据上的分类准确率.

4.3 例子2:最优聚类

  • 输入: 结构化数据, 其中特征均为实型;簇数 k k k.
  • 输出: 每个实例的簇编号 (1 到 k k k).
  • 优化目标: 每个实例到簇中心的距离和

说明: 优化目标也可以写成簇内每对实例的距离之和. 但这样计算量要大得多. 例如, 1,000 个实例分成 10 个簇, 每个簇刚好有 100 个实例. 则计算实例到中心的距离只需要进行 1,000 次距离计算, 而计算实例对的距离, 需要 10 * C(100, 2) = 500*99 次.

4.4 问题定义并不决定解决方案

在解决机器问题的时候, 我们很可能不按严格按照定义来设计算法, 因为这涉及模型的泛化性.

5 线性回归

将数据点串成一根糖葫芦.

5.1 一元线性回归

线性回归是直接从问题到解决方案, 而岭回归之类则让我们理解正则项.

在二维平面有一系列数据点, x x x坐标表示其数据, y y y 坐标表示其标签. 对于新的数据, 如何预测其标签? 为此, 我们可以建立一个线性函数 y = a x + b y=ax+b y=ax+b.

  • 输入:数据点集合 { ( x i , y i ) } i = 1 n \{(x_i, y_i)\}_{i = 1}^n {(xi,yi)}i=1n.
  • 输出: 线性函数的 a , b a, b a,b.
  • 优化目标: min ⁡ ∑ i = 1 n ( y i − y i ′ ) 2 \min \sum_{i = 1}^{n} (y_i - y_i')^2 mini=1n(yiyi)2, 其中 y i ′ = a x i + b y_i' = a x_i + b yi=axi+b.

这个问题在高中学过, 称为最小二乘法. 从优化目标可以看出, 优化的是 l 2 l_2 l2模.

下图给出了广告费与销售额之间的关系. 虚线所示的 f ( x ) f(x) f(x) 试图对所给的数据点进行拟合. 由此可以预测广告费为 2 万元、14万元等所对应的销售额. 直观地看, a a a 是斜率, b b b 是偏移量.
在这里插入图片描述

5.2 多元线性回归

多元的情况, 只需要将 x x x a a a 从标量改为向量即可. y y y b b b仍然为标量. 这时, 拟合直线换成了超平面.
在这里插入图片描述

  • 输入:数据点集合 { ( x i , y i ) } i = 1 n \{(x_i, y_i)\}_{i = 1}^n {(xi,yi)}i=1n, 其中 x i ∈ R m x_i \in \mathbb{R}^m xiRm.
  • 输出: 线性函数的 a , b \mathbf{a}, b a,b.
  • 优化目标: min ⁡ ∑ i = 1 n ( y i − f ( x i ) ) 2 \min \sum_{i = 1}^{n} (y_i - f(x_i))^2 mini=1n(yif(xi))2, 其中 f ( x i ) = a x i + b f(x_i) = \mathbf{a} \mathbf{x}_i + b f(xi)=axi+b.

为了解该问题, 可以将数据集合用矩阵表示, 标签集合则用向量表示, 即
Y = X θ + b . \mathbf{Y} = \mathbf{X} \theta + b. Y=Xθ+b.
在 $ \mathbf{X}$ 最左边加上一列全 1, 可以把 b b b 吸收进 θ \theta θ 里面去, 获得:
Y = X θ . \mathbf{Y} = \mathbf{X} \theta. Y=Xθ.
例如:
X = [ 1 0.2 0.4 0.3 1 0.3 0.5 0.4 1 0.3 0.7 0.5 1 0.4 0.6 0.6 1 0.2 0.8 0.6 ] , Y = [ 0.2 0.3 0.7 0.4 0.5 ] (2) \mathbf{X}=\left[\begin{array}{llll} 1 & 0.2 & 0.4 & 0.3 \\ 1 & 0.3 & 0.5 & 0.4 \\ 1 & 0.3 & 0.7 & 0.5 \\ 1 & 0.4 & 0.6 & 0.6 \\ 1 & 0.2 & 0.8 & 0.6 \end{array}\right], \mathbf{Y}=\left[\begin{array}{l} 0.2 \\ 0.3 \\ 0.7 \\ 0.4 \\ 0.5 \end{array}\right] \tag2 X= 111110.20.30.30.40.20.40.50.70.60.80.30.40.50.60.6 ,Y= 0.20.30.70.40.5 (2)
由于实例个数 (这里 n = 5 n = 5 n=5) 多于特征个数 (这里 m = 3 m = 3 m=3), (2) 式是一个超定方程组, 即一般情况下不存在这样的 θ \theta θ 使得 (2) 式成立.
为了理解这个事情, 可以回到一元线性回归, 当数据点 3 个或以上, 就不存在一条直线刚好穿过所有的点.
根据优化目标, 可以解得:
θ = ( X T X ) − 1 X T Y . \theta = (\mathbf{X}^\mathbf{T}\mathbf{X})^{-1}\mathbf{X}^\mathbf{T}\mathbf{Y}. θ=(XTX)1XTY.

如果这里求矩阵的逆出了问题 (有些矩阵没有逆), 就可以用梯度下降法来求解.

5.3 岭回归

θ = ( X T X ) − 1 X T Y . \theta = (\mathbf{X}^\mathbf{T}\mathbf{X})^{-1}\mathbf{X}^\mathbf{T}\mathbf{Y}. θ=(XTX)1XTY.
上面公式求逆矩阵的时候可能出问题, 为了解决它, 引入新的优化目标:
min ⁡ ∑ i = 1 n ( y i − f ( x i ) ) 2 + λ ∑ j = 1 m θ j 2 . \min \sum_{i = 1}^{n} (y_i - f(x_i))^2 + \lambda \sum_{j = 1}^{m} \theta_j^2. mini=1n(yif(xi))2+λj=1mθj2.
由此推导出:
θ = ( X T X + λ I ) − 1 X T Y . \theta = (\mathbf{X}^\mathbf{T}\mathbf{X} + \lambda \mathbf{I})^{-1}\mathbf{X}^\mathbf{T}\mathbf{Y}. θ=(XTX+λI)1XTY.

  • λ I \lambda \mathbf{I} λI 的加入使得矩阵一定可逆.
  • 除了解决矩阵求逆的问题, 新的优化目标还有个非常重要的作用: 对 θ j \theta_j θj的值进行惩罚. 也就是说, θ j \theta_j θj的绝对值越大, 这个方案越不好.
  • λ ∑ j = 1 m θ j 2 \lambda \sum_{j = 1}^{m} \theta_j^2 λj=1mθj2就是传说中的正则项, 它牺牲了模型在训练集中的拟合能力, 但提升了在新数据上的预测能力 (即泛化能力). 而模型的泛化能力是机器学习的核心.
  • 这里的系数 λ \lambda λ 设置得越大, 对训练数据的拟合就越差. 但设置得太小, 就不能达到控制过拟合的目的.
  • 很多机器学习的论文, 都致力于提升模型的泛化能力. 俗气一点, 就是使用不同的正则项, 然后再给出合理的解释, 并用良好的实验结果来证实. 系数 λ \lambda λ 的设置, 也通常是人为的.

5.4 欠拟合

左图所示的糖葫芦串得不错, 但在现实世界中, 用一根直接把数据串起来很困难. 这很容易导致欠拟合, 也就是说, 很多点都拟合得不好.
局部线性回归:数据往往体现一定的局部性, 即与自己相邻的数据, 影响更大 (回头想想 k k kNN). 所以我们可以更重视局部点的影响, 由此引入局部线性回归, 如右图所示.
在这里插入图片描述

5.5 离群点

如图所示, 少量离群点导致拟合函数产生了较大的偏移 (下面这根线). 这些离群点可能是数据采集过程中错误导致.
一种解决方式如下: 生成拟合函数后, 可以把偏差最大的一部分 (如 1%) 训练数据去掉, 再进行拟合 (上面这根线). 这种简单的方式可以削弱离群点的影响.
在这里插入图片描述

5.6 线性回归在机器学习常识中的意义

是机器学习问题定义的一个典型案例.
线性模型及其变种在很多地方被采用. 也不是因为线性模型的拟合能力强 (其实它是最弱的), 而是因为它简单, 易于计算.
给出了一个典型的优化目标.
能从优化目标直接获得最优解, 如下式所示.
θ = ( X T X ) − 1 X T Y . \theta = (\mathbf{X}^\mathbf{T}\mathbf{X})^{-1}\mathbf{X}^\mathbf{T}\mathbf{Y}. θ=(XTX)1XTY.
对于绝大多数机器学习问题, 这点无法做到.
给出了一个典型的正则项.

5.7 常见误区

  • 可视化的时候, 标签本身需要占一个维度. 仅 1 个特征的时候,就需要在二维平面上表示. 例中有 3 个特征, 应该使用 4 维空间中的超平面表示. 这与后面的分类问题很容易弄混.
  • X \mathbf{X} X 最左边一列为 1, 实际是为了把偏移量放入 θ \theta θ , 方便表达. 并不是数据多了一个特征.
  • 超定方程组不存在解. 误差是难免的. 下面的公式理论上使得误差最小.
    θ = ( X T X ) − 1 X T Y . \theta = (\mathbf{X}^\mathbf{T}\mathbf{X})^{-1}\mathbf{X}^\mathbf{T}\mathbf{Y}. θ=(XTX)1XTY.
  • 系数 λ \lambda λ 的大小表示对过拟合的控制强度.
  • 从一元线性回归来看, 误差不是点到拟合直线的距离, 而是 y i y_i yi f ( x i ) f(x_i) f(xi) 的差值.

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

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

相关文章

Blazor简单教程(1.1):Razor基础语法

文章目录 前言语法介绍生命C#代码控件绑定简单绑定双向绑定带参数的函数绑定 前言 Blazor最重要的是Razor组件和cshtml页面。两个最大的区别就是cshtml是完整的html,Razor是不完整的html 微软Razor 语法官方文档 我的Blazor基础语法个人总结 语法介绍 生命C#代码控件 code…

Stable Diffusion - 幻想 (Fantasy) 风格与糖果世界 (Candy Land) 的人物图像提示词配置

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/132212193 图像由 DreamShaper8 模型生成,融合糖果世界。 幻想 (Fantasy) 风格图像是一种以想象力为主导的艺术形式,创造了…

UDS诊断笔记

文章目录 常见缩写简介UDS寻址模式1. 物理寻址(点对点、一对一)2. 功能寻址(广播、一对多)3. 功能寻址使用场景举例 UDS报文格式UDS协议栈网络层网络层功能网络层协议1. 单帧 SF(Single Frame)2. 首帧 FC&a…

matplotlib笔记:bar barh

1 bar 绘制垂直方向的条形图 x条形的 x 坐标height 条形的高度 width 条形的宽度 (浮点数或类数组) bottom 条形的底部的 y 坐标 (浮点数或类数组) align 控制条形对齐方式 center:将基线居中于 x 位置。ed…

cpu的cacheline对程序效率影响

什么是cpu cacheline CPU的缓存行(Cache Line)是存储器层次结构中的一部分,用于在CPU缓存和主存之间传输数据。缓存行是缓存的最小单位,也是处理器从主存中读取数据到缓存或将数据从缓存写回主存的最小数据块。 缓存行的大小是由…

C语言 指针与内存之间的关系

一、内存与字节 一个内存单元一个字节一个地址 整型 int 类型中int类型的字节数是4 且一个字节表示八个bite位 一个二进制数位有着32个bite 所以又可以表示为:一个字节 8个比特位 32位数的二进制数位的八分之一 例如: int a 10; 该表达式…

编程基础与脚本规范

编程基础与脚本规范 一.编程基础1.1程序组成1.2.编程风格1.3 编程语言的分类 二.shell脚本基础2.1shell脚本的用途和应用场景2.2常见的shell解释器2.3shell脚本基本结构2.4shell规范脚本2.5脚本的执行方式2.6脚本错误调试 三.重定向与管道符3.1标准输入去输出3.2重定向3.3 管道…

TypeError: Plain typing.NoReturn is not valid as type argument解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

【C语言】初阶指针详解

目录 一、什么是指针? 1.指针变量 2.指针大小 二、指针类型 三、野指针 四、指针运算 1.指针-整数 2.指针-指针 3.指针的关系运算 五、指针和数组 六、二级指针 七、指针数组 一、什么是指针? 指针是内存中一个最小单元的编号,…

MySQL_数据库的DDL语句(表的创建与修改)

DDL 数据库操作 查看当前有哪些数据库 SHOW databases;#查看哪些数据库查询当前数据库 SELECT database();创建数据库 create database [ if not exists ] 数据库名 [ default charset 字符集 ] [ collate 排序 规则 ] ;创建一个sycoder数据库, 使用数据库默认的字符集 CREATE…

retrofit-helper 简洁的封装retrofit,优雅的取消请求

retrofit-helper Retrofit是很多android开发者都在使用的Http请求库!他负责网络请求接口的封装,底层实现是OkHttp,它的一个特点是包含了特别多注解,方便简化你的代码量,CallAdapter.Factory 和Converter.Factory可以很灵活的扩展你的请求。我们在使用的…

“崩溃”漏洞会影响英特尔 CPU 的使用寿命,可能会泄露加密密钥等

对于 CPU 安全漏洞来说,本周是重要的一周。昨天,不同的安全研究人员发布了两个不同漏洞的详细信息,一个影响多代英特尔处理器,另一个影响最新的 AMD CPU。“ Downfall ”和“ Inception ”(分别)是不同的错…

CEC2013(MATLAB):能量谷优化算法EVO求解CEC2013的28个函数

一、能量谷优化算法EVO 能量谷优化算法(Energy valley optimizer,EVO)是MahdiAzizi等人于2023年提出的一种新颖的元启发式算法,其灵感来自关于稳定性和不同粒子衰变模式的物理原理。能量谷优化算法(Energy valley opt…

AI时代的较量,MixTrust能否略胜一筹?

人工智能的能力正在迅速接近人类,而在许多细分领域,已经超越了人类。虽然短期内这个突破是否会导致人工通用智能(AGI)还不清楚,但我们现在有的模型被训练成在数字交互中完美地模仿高能人类。尽管AGI仍不确定&#xff0…

时序预测 | MATLAB实现CNN-BiGRU-Attention时间序列预测

时序预测 | MATLAB实现CNN-BiGRU-Attention时间序列预测 目录 时序预测 | MATLAB实现CNN-BiGRU-Attention时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现CNN-BiGRU-Attention时间序列预测,CNN-BiGRU-Attention结合注意力机制时…

Java课题笔记~ Request请求

1.请求消息格式 客户端发送一个HTTP请求到服务器的请求消息包括以下格式: 请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。下图给出了请求报文的一般格式。 GET请求: POST请求&am…

每日一学——OSI参考模型

OSI参考模型(Open Systems Interconnection Reference Model)是国际标准化组织(ISO)制定的一个网络通信协议的概念框架。它将网络通信划分为七个层次,每个层次负责不同的功能和任务,从物理层到应用层依次为…

【ThreadPoolTaskSchedule】实现手动开启关闭定时任务

最近在公司呢,有一个需求,大概意思就是需要我去调用远程接口,但如果出现异常或者响应失败的时候,就需要开启重试机制,直到返回成功的响应为止。我很疑惑,按理说这种情况通常都应该有一个最大重试次数吗&…

python编程英语词汇大全app,python常用单词中英对照

大家好,小编为大家解答python编程英语词汇大全 知乎的问题。很多人还不知道python编程英语词汇大全app,现在让我们一起来看看吧! 第1天 editor[edtr]n. 编者,编辑;社论撰写人;编辑装置 setting[set]n. 环境…

《爬虫》爬取页面图片并保存

爬虫 前言代码效果 简单的爬取图片 前言 这几天打算整理与迁移一下博客。因为 CSDN 的 Markdown 编辑器很好用 ,所以全部文章与相关图片都保存在 CSDN。而且 CSDN 支持一键导出自己的文章为 markdown 文件。但导出的文件中图片的连接依旧是 url 连接。为了方便将图…