Course1-Week2-多输入变量的回归问题

Course1-Week2-多输入变量的回归问题

文章目录

  • Course1-Week2-多输入变量的回归问题
    • 1. 向量化和多元线性回归
      • 1.1 多维特征
      • 1.2 向量化
      • 1.3 用于多元线性回归的梯度下降法
    • 2. 使梯度下降法更快收敛的技巧
      • 2.1 特征缩放
      • 2.2 判断梯度下降是否收敛
      • 2.3 如何设置学习率
    • 3. 特征工程
      • 3.1 选择合适的特征
      • 3.2 多项式回归

  • 笔记主要参考B站视频“(强推|双字)2022吴恩达机器学习Deeplearning.ai课程”。

好文:

  • 2023吴恩达机器学习: 上班族35 天学完~学习笔记 (1.1 监督学习)——系列文章
  • 入门机器学习/深度学习要多长时间?

本篇笔记对应课程 Course1-Week2(下图中深紫色)。


1. 向量化和多元线性回归

  在上一周“单变量线性回归”的基础上,本周将继续拓展到“多元线性回归”(第1节)、“多项式回归”(第3节),并介绍加速梯度下降法收敛的技巧(第2节)。

1.1 多维特征

首先将单个特征扩展到多个特征,下面是机器学习术语:

  • m m m:训练样本的总数。
  • n n n:输入特征的总数。
  • X ⃗ \vec{X} X :全部的输入特征值,是一个二维向量,每一行表示一个样本,每一列表示所有样本的单个特征。
  • x ⃗ j \vec{x}_j x j:表示第 j j j个特征概念(一维向量), j j j的取值范围为 j = 1 , . . . , n j=1,...,n j=1,...,n
  • x ⃗ ( i ) \vec{x}^{(i)} x (i):第 i i i个训练样本的输入特征(一维向量), i i i的取值范围为 i = 1 , . . . , m i=1,...,m i=1,...,m
  • x ⃗ j ( i ) \vec{x}^{(i)}_{j} x j(i):第 i i i个训练样本的第 j j j个特征,是单个值。如下图中, x ⃗ 4 ( 3 ) = 30 \vec{x}^{(3)}_4 = 30 x 4(3)=30
  • y ⃗ ( i ) \vec{y}^{(i)} y (i):第 i i i个训练样本的目标值,是单个值。
  • Y ⃗ \vec{Y} Y :全部的训练样本的特征值,是一维向量。

注:若无特殊说明,所有的一维向量都默认为列向量。

概念区分:

  • 单变量线性回归(univariate linear regression):只有单个特征的线性回归模型。
  • 多元线性回归(multiple linear regression):具有多维特征的线性回归模型。
  • multivariate regression:不是上述“多元回归”!另有别的意思,后面介绍。
图1-2-1 四维特征的房价预测问题

  如上图所示,将“房价预测”中的输入特征数量增加为4个:输入特征:房屋面积、卧室数量、房屋层数、房屋年龄。于是显然其线性回归模型也将从 f w , b ( x ) = w x + b f_{w,b}(x) = wx+b fw,b(x)=wx+b 扩展为下面的向量形式:
f w ⃗ , b ( x ⃗ ) = w 1 x 1 + w 2 x 2 + . . . + w 4 x 4 + b = ∑ j = 1 n w j x j + b = w ⃗ ⋅ x ⃗ + b \begin{aligned} f_{\vec{w},b}(\vec{x}) &= w_1x_1 + w_2x_2 + ... + w_4x_4 + b\\ &= \sum_{j=1}^{n}w_jx_j + b\\ &= \vec{w}·\vec{x} + b \end{aligned} fw ,b(x )=w1x1+w2x2+...+w4x4+b=j=1nwjxj+b=w x +b

  • w ⃗ = [ w 1 , w 2 , . . . , w n ] T \vec{w}=[w_1,w_2,...,w_n]^T w =[w1,w2,...,wn]T:表示参数(列)向量。 w i w_i wi表示当前特征对房屋价格影响。
  • b b b:常数项参数。可以理解为房屋的基价(base price)。
  • x ⃗ = [ x 1 , x 2 , . . . , x n ] T \vec{x}=[x_1,x_2,...,x_n]^T x =[x1,x2,...,xn]T:表示单个样本的特征(列)向量。
  • w ⃗ ⋅ x ⃗ \vec{w}·\vec{x} w x :表示两个向量的点积。

1.2 向量化

  简单来说,所谓“向量化”就是将分散的数字绑在一起进行处理。虽然概念很简单,但是“向量化”对于机器学习来说非常重要,因为它可以使模型更简洁代码更简洁,并且也可以加速代码运行速度。比如下图给出了三种书写求和公式 $$ 的方法。可以发现,使用向量形式的模型表达式最简洁、代码最少(一行):

图1-2-2 向量化的好处
  1. 一个一个写:很麻烦,耗时耗力,也不会加快代码计算。
  2. for循环:每次只能计算单个乘法并相加,n很大时非常耗时。
  3. 向量相乘:形式简洁、运行更快。这是因为 numpy.dot()可以并行计算所有乘法,再进行相加。甚至某些内置算法还会使用GPU加速运算。

注:Optional Lab介绍了一些NumPy的语法。

并且梯度下降法的迭代计算中,使用向量更新参数也会非常简洁。所以机器学习中尽量使用向量化代码

1.3 用于多元线性回归的梯度下降法

  有了“向量化”的铺垫,本节将前面的单变量线性回归问题扩展到多元线性回归。首先使用“向量”重写模型,然后也就可以写出梯度下降法的“向量”形式,进而迭代计算出模型参数:
Model : f w ⃗ , b ( x ⃗ ) = w ⃗ ⋅ x ⃗ + b Cost function : min ⁡ w ⃗ , b J ( w ⃗ , b ) = 1 2 m ∑ i = 1 m ( f w ⃗ , b ( x ⃗ ( i ) ) − y ( i ) ) 2 Gradient descent repeat until convergence : { w j = w j − α ∂ ∂ w j J ( w ⃗ , b ) = w j − α m ∑ i = 1 m [ ( f w ⃗ , b ( x ⃗ ( i ) ) − y ( i ) ) ⋅ x ⃗ j ( i ) ] ,    j = 1 , 2 , . . . , n . b = b − α ∂ ∂ b J ( w ⃗ , b ) = b − α m ∑ i = 1 m ( f w ⃗ , b ( x ⃗ ( i ) ) − y ( i ) ) \begin{aligned} \text{Model} &: \quad f_{\vec{w},b}(\vec{x}) = \vec{w}·\vec{x} + b\\ \text{Cost function} &: \quad \min_{\vec{w},b} J(\vec{w},b) = \frac{1}{2m} \sum_{i=1}^{m}(f_{\vec{w},b}(\vec{x}^{(i)})-y^{(i)})^2\\ \begin{aligned} \text{Gradient descent} \\ \text{repeat until convergence} \end{aligned} &: \left\{\begin{aligned} w_j &= w_j - \alpha \frac{\partial }{\partial w_j} J(\vec{w},b) = w_j - \frac{\alpha}{m} \sum_{i=1}^{m}[(f_{\vec{w},b}(\vec{x}^{(i)})-y^{(i)})·\vec{x}^{(i)}_j],\; j=1,2,...,n. \\ b &= b - \alpha \frac{\partial }{\partial b} J(\vec{w},b) = b - \frac{\alpha}{m} \sum_{i=1}^{m}(f_{\vec{w},b}(\vec{x}^{(i)})-y^{(i)}) \end{aligned}\right. \end{aligned} ModelCost functionGradient descentrepeat until convergence:fw ,b(x )=w x +b:w ,bminJ(w ,b)=2m1i=1m(fw ,b(x (i))y(i))2: wjb=wjαwjJ(w ,b)=wjmαi=1m[(fw ,b(x (i))y(i))x j(i)],j=1,2,...,n.=bαbJ(w ,b)=bmαi=1m(fw ,b(x (i))y(i))

  • 模型中 x ⃗ \vec{x} x 表示单个样本的所有特征,是一维向量。
  • f w ⃗ , b ( x ⃗ ( i ) ) f_{\vec{w},b}(\vec{x}^{(i)}) fw ,b(x (i))是一个值, y ( i ) y^{(i)} y(i)是一个值。

  除了梯度下降法,还有一类求解模型参数的方法——正规方程法(Normal rquation method)。此方法利用线性代数的知识,直接令代价函数的梯度 ∂ ∂ w ⃗ J ( w ⃗ , b ) = 0 ⃗ \frac{\partial }{\partial \vec{w}} J(\vec{w},b) = \vec{0} w J(w ,b)=0 ,便可以一步求解出代价函数极小点所对应的参数值: w ⃗ = ( X ⃗ T X ⃗ ) − 1 X ⃗ T Y ⃗ \vec{w}=(\vec{X}^T\vec{X})^{-1}\vec{X}^T\vec{Y} w =(X TX )1X TY ,见“详解正规方程”。但是这种方法有两个缺点:

  1. 适用面小:仅适用于线性拟合,无法应用于其他方法,比如下周要学的“逻辑回归算法(logistic regression algorithm)”或者神经网络(Course2)。
  2. 计算规模不能太大:如何特征值数量很大,矩阵的逆等求解非常慢。

正规方程法通常会包含在机器学习函数库中,我们无需关心具体的计算过程。对于大多数机器学习算法来说,梯度下降法仍然是推荐的方法

本节Quiz

  1. In the training set below, what is x 4 ( 3 ) x_4^{(3)} x4(3)? Please type in the number below (this is an integer such as 123, no decimal points).
    Answer: 30

  2. Which of the following are potential benefits of vectorization? Please choose the best option.
    √ It can make your code shorter.
    √ It allows your code to run more easily on parallel compute hardware.
    √ It makes your code run faster.
    √ All of the above.

  3. To make gradient descent converge about twice as fast, a technique that almost always works is to double the learning rate α \alpha α.
    × True
    √ False

  4. With polynomial regression, the predicted values f w , b ( x ) f_{w,b}(x) fw,b(x) does not necessarily have to be a straight line (or linear) function of the input feature x x x.
    × False
    √ True

2. 使梯度下降法更快收敛的技巧

2.1 特征缩放

  特征缩放(feature scaling)可以使梯度下降法更快收敛。这主要是因为不同特征的取值范围有很大不同,但所有特征所对应的参数的学习率是一致的。这就导致取值范围较小的特征的参数,会“跟不上”取值范围较大的特征的参数变化。比如我们来看看“特征值大小”和其关联的“参数大小”的关系,首先将“房价预测”的问题简化成两个特征:

图1-2-3 取值范围不同的特征对预测结果的影响不同
  • x 1 x_1 x1:房屋面积,范围是300~2000平方英尺。
  • x 2 x_2 x2:卧室数量,范围是0~5。

参数选择:显然取值范围更大的 x 1 x_1 x1 影响更大

  • w 1 = 50 , w 2 = 0.1 , b = 50 w_1=50,w_2=0.1,b=50 w1=50,w2=0.1,b=50:计算出来的房屋价格是 $$100050.5k$,显然与实际的 $$500k$ 完全不符。
  • w 1 = 0.1 , w 2 = 50 , b = 50 w_1=0.1,w_2=50,b=50 w1=0.1,w2=50,b=50:计算出来的房屋价格是 $$500k$,正好等于房屋实际价格。

  于是,便考虑将 特征值归一化,使所有特征值的取值范围大致相同,这样就不会影响参数的迭代计算了。如下图便给出了进行 特征缩放 前后的对比:

图1-2-4 特征值缩放效果-等高图

左两图是训练样本散点图;右两图是代价函数等高图。上两图对应特征缩放前;下两图对应特征缩放后。

  • 特征缩放前:散点图呈现条形,等高图呈极窄的椭圆形。这是因为对于范围较大的特征值( x 1 x_1 x1)所对应的参数 w 1 w_1 w1,一点微小的改变就会导致代价函数剧烈变化,进而使得等高图呈椭圆状。在使用梯度下降法的时候,由于学习率一样,每走一小步,就会导致代价函数在 w 2 w_2 w2方向变化不多、但在 w 1 w_1 w1方向急剧变化,于是就会“反复横跳”,增加迭代次数和计算量,甚至不能收敛。
  • 特征缩放后:散点图分布较为均匀,并且等高图呈圆形。梯度下降法可以径直朝最小值迭代,减少迭代次数、更快的得到结果。

  好,现在我们知道进行 特征缩放 很有必要,那具体如何进行“特征缩放”,来使得所有特征都有相近的范围大小呢?主要有下面三种方法,并给出了第三种方法“Z-score归一化”的特征缩放效果:

  1. 除以最大值:所有特征除以各自的范围最大值,使得特征值范围都在0~1之间。于是 0.15 ≤ x 1 2000 ≤ 1 0.15 \le \frac{x_1}{2000} \le 1 0.152000x11、$ 0 \le \frac{x_2}{5} \le 1$。
  2. 均值归一化(Mean normalization):使得特征值范围大致为-1~1。假设 x 1 x_1 x1的平均值为 μ 1 = 600 \mu_1=600 μ1=600 x 2 x_2 x2的平均值为 μ 2 = 2.3 \mu_2=2.3 μ2=2.3,于是 − 0.18 ≤ x 1 − μ 1 2000 − 300 ≤ 0.82 -0.18 \le \frac{x_1 - \mu_1}{2000 - 300} \le 0.82 0.182000300x1μ10.82、$ -0.46 \le \frac{x_2 - \mu_2}{5 - 0} \le 0.54$。
  3. Z-score归一化(Z-score normalization)【推荐】:使得特征值服从标准正态分布。假设 x 1 x_1 x1的平均值和标准差分别为 μ 1 = 600 , σ 1 = 450 \mu_1=600,\sigma_1=450 μ1=600,σ1=450 x 2 x_2 x2的平均值和标准差分别为 μ 2 = 2.3 , σ 2 = 1.4 \mu_2=2.3,\sigma_2=1.4 μ2=2.3,σ2=1.4,于是 − 0.67 ≤ x 1 − μ 1 σ 1 ≤ 3.1 -0.67 \le \frac{x_1 - \mu_1}{\sigma_1} \le 3.1 0.67σ1x1μ13.1、$ -1.6 \le \frac{x_2 - \mu_2}{\sigma_2} \le 1.9$。

注:Z-score归一化的合理性在于自然界中大部分数据都是服从正态分布的。
均值: μ j = 1 m ∑ i = 0 m − 1 x ⃗ j ( i ) ,    j = 0 , 1 , . . . , n . \mu_j = \frac{1}{m} \sum_{i=0}^{m-1}\vec{x}^{(i)}_j , \; j=0,1,...,n. μj=m1i=0m1x j(i),j=0,1,...,n.
方差: σ j 2 = 1 m ∑ i = 0 m − 1 ( x ⃗ j ( i ) − μ j ) 2 ,    j = 0 , 1 , . . . , n . \sigma^2_j = \frac{1}{m} \sum_{i=0}^{m-1} (\vec{x}^{(i)}_j-\mu_j)^2, \; j=0,1,...,n. σj2=m1i=0m1(x j(i)μj)2,j=0,1,...,n.
标准差: σ j = σ j 2 ,    j = 0 , 1 , . . . , n . \sigma_j = \sqrt{\sigma^2_j}, \; j=0,1,...,n. σj=σj2 ,j=0,1,...,n.

图1-2-5 Z-score归一化的效果

上面三个图的横纵坐标分别为两个特征:房屋面积、房屋年龄。可以看到特征缩放后,样本散点图分布的更加均匀。
下面两个图的横纵坐标同样是两个特征:房屋面积、卧室数量。可以看到特征缩放后,等高线图趋近圆形。
图片来自:C1_W2_Lab03_Feature_Scaling_and_Learning_Rate_Soln:

最后要说明一点,特征缩放后,只要所有特征值的范围在一个数量级就都可以接受,但若数量级明显不对等就需要 重新缩放

2.2 判断梯度下降是否收敛

  本节主要介绍 横坐标为迭代次数 的“学习曲线(learning carve)”。学习曲线可以帮助我们判断梯度下降法 是否正在收敛,或者判断梯度下降法 是否已经收敛。如下图给出了正常的学习曲线,

图1-2-6 正常收敛的学习曲线示意图
  • 正常情况:每次迭代后,代价函数都应该下降。直到某次迭代后,代价函数几乎不再下降,就认为是收敛。
  • 算法没有收敛:若某次迭代后,代价函数变大,则算法没有收敛,可能意味着学习率 α \alpha α过大。
  • 算法已经收敛:上图中的红色段,可以看到代价函数几乎不再下降。

自动收敛测试(automatic convergence test):若两次迭代之间,代价函数的减少值 ≤ ϵ = 1 0 − 3 \le \epsilon=10^{-3} ϵ=103(自定义),即可认为收敛。但是通常 ϵ \epsilon ϵ的选取很困难,所以还是建议使用上图所示的学习曲线进行判断。

注意不同的算法或问题,其收敛的迭代次数都不同,有些问题可能几十次就收敛,有些问题可能需要上万次才能收敛。由于很难提前知道梯度下降法是否会收敛,所以可以根据这个学习曲线来进行判断。

2.3 如何设置学习率

  之前提到,学习率太小,收敛太慢;学习率太大,可能不会收敛。那如何选择合适的学习率呢?正确的做法是,迭代较小的次数,快速地、粗略地选出合适的学习率。具体的选择策略从一个较小的学习率(如0.01)开始,逐渐增大,直到出现不收敛的情况。如下图所示:

图1-2-7 逐步增加学习率
  • 代价函数起伏不定:代码逻辑有bug(比如迭代方向写反),或者学习率太大。
  • 验证代码逻辑正常:当学习率很小时,代价函数会不断减小,即使很慢。

3. 特征工程

  “特征工程”这个标题听起来怪怪的,其实就是如何挑选、组合、使用“特征”的一套方法论。特征工程(Feature engineering)使用先验知识或直觉来转换或组合原始特征,从而设计出新的特征,进而简化算法或者使预测结果更准确。

关于Python仿真:scikit-learn是一个非常广泛使用的开源机器学习库,但是老师希望能理解线性回归的原理,而不是盲目地调用scikit-learn的函数。

3.1 选择合适的特征

  最简单的特征工程就是“选择合适的特征”。比如下图中,原始特征应该为房子所在地块的长度(frontage)和宽度(depth),但占地面积(frontage × depth)应该是更符合直观的特征,于是就利用两个原始特征创造出了新的特征。

图1-2-8 创造新的特征

3.2 多项式回归

  另一种特征工程就是对某个特征进行幂次,进而实现使用非直线来拟合数据,也就是“多项式回归(Polynomial Regression)”。比如给出下图中红叉所示的训练样本,显然用直线拟合并不符合直观,于是:

  • 二次函数拟合:虽然前半段看起来很好,但是终归会下降,这不符合“面积越大,房子越贵”的常识。
  • 三次函数拟合:符合直觉,但后面房价随面积快速上升。
  • 开根号拟合:符合直觉,房价随着面积缓慢上升。

注:进入的幂次越高,特征缩放就显得越重要,否则参数的为微小变化将引起代价函数的剧烈波动,很可能会导致算法无法收敛。

图1-2-9 多项式拟合——二次拟合、三次拟合、开根号拟合

在Course2中将介绍如何挑选不同的特征,现在只是明确用户可以挑选特征,并且使用“特征工程”和“多项式函数”可以拟合出曲线,来更加贴合样本。

  1. Which of the following is a valid step used during feature scaling?
    × Add the mean (average) from each value and and then divide by the (max - min).
    √ Subtract the mean (average) from each value and then divide by the (max - min).

  2. Suppose a friend ran gradient descent three separate times with three choices of the learning rate α \alpha α and plotted the learning curves for each (cost J J J for each iteration). For which case, A or B, was the learning rate a likely too large?
    √ case B only.
    × Both Cases A and B.
    × case A only.
    × Neither Case A nor B.

  3. Of the circumstances below, for which one is feature scaling particularly helpful?
    × Feature scaling is helpful when all the features in the original data (before scaling is applied) range from 0 to 1.
    √ Feature scaling is helpful when one feature is much larger (or smaller) than another feature.
    注:本题想表达的意思是,原始特征值范围都在0~1附近时,就没必要进行特征缩放了。

  4. You are helping a grocery store predict its revenue, and have data on its items sold per week, and price per item. What could be a useful engineered feature?
    √ For each product, calculate the number of items sold times(乘) price per item.
    × For each product, calculate the number of items sold divided(除) by the price per item.

注:C1_W2_Linear_Regression包含单变量线性回归、多线线性回归的练习题,值得一做。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

react中的state

没想到hooks中也有state这一说法 看下面的两个案例 1、无state变化不会执行父子函数 2、有state更改执行父子函数

竞赛选题 车道线检测(自动驾驶 机器视觉)

0 前言 无人驾驶技术是机器学习为主的一门前沿领域,在无人驾驶领域中机器学习的各种算法随处可见,今天学长给大家介绍无人驾驶技术中的车道线检测。 1 车道线检测 在无人驾驶领域每一个任务都是相当复杂,看上去无从下手。那么面对这样极其…

数据提取PDF SDK的对比推荐

PDF 已迅速成为跨各种平台共享和分发文档的首选格式,它作为一种数据来源,常见于公司的各种报告和报表中。为了能更好地分析、处理这些数据信息,我们需要检测和提取 PDF 中的数据,并将其转换为可用且有意义的格式。而数据提取的 PD…

【Spring进阶系列丨第四篇】Spring的Bean管理(基于xml的配置)

前言 我们知道,容器是一个空间的概念,一般理解为可盛放物体的地方。在Spring容器通常理解为BeanFactory或者ApplicationContext。我们知道spring的IOC容器能够帮我们创建对象,对象交给spring管理之后我们就不用手动去new对象。 那么Spring是如…

服务号可以迁移到订阅号吗

服务号和订阅号有什么区别?服务号转为订阅号有哪些作用?首先我们要看一下服务号和订阅号的主要区别。1、服务号推送的消息没有折叠,消息出现在聊天列表中,会像收到消息一样有提醒。而订阅号推送的消息是折叠的,“订阅号…

2023“亚太杯”大学生数学建模竞赛

2023亚太杯数学建模C题 中国新能源电动汽车的发展趋势 解题思路、数据 该题并没有提供数据集,对所需数据进行收集整理是对题目进行求解的基础。在本题中,主要需要以下数据:新能源汽车历史销售量、新能汽车相关专利的历史数量、充电桩历史数…

【外贸商机篇】黑色星期五来啦,跨境电商必备手册!

黑色星期五是每年11月的第四个星期五,三天后是网络星期一。这两个购物日是美国一年中最繁忙的购物日之一,仅在2021年的感恩节周末,电子商务收入估计就达到196亿美元。 在一项Statista调查中,美国消费者被问及他们计划购买哪些商品…

太赫兹涂层测厚:为汽车制造商保驾护航

太赫兹涂层测厚:为汽车制造商保驾护航 近年来,专用于测量任何表面涂层厚度的IRYS太赫兹系统,成功赢得了包括大众和丰田在内的全球领先整车厂的信任。 为了实现这一目标,IRYS系统经过了许多制造商为甄选值得信赖的技术供应商而设置…

软件开发及交付中,如何平衡项目进度和团队成员的利益?

在平衡软件质量与时间、成本、范围的关系时,需要考虑到项目管理的金三角概念,即时间、成本和范围。从项目管理的角度来看,项目进度和团队成员的利益需要平衡。 以下是一些建议: 制定可行的计划:让项目相关各方充分参与…

我劝烂了,这东西大学生早用早解脱

大学生看我,这个东西太太太香了啊!!! 要写论文,写总结的都给我用起来 这东西能自动写文章,想写几篇就写几篇,篇篇不重复!只要输入一个标题,马上就能生成一篇。真的贼香…

目前软件测试行业发展如何?第三方软件检测机构是否是未来趋势?

随着软件行业的快速发展,软件质量的重要性日益凸显,软件测试也成为了软件开发过程中不可或缺的环节。那么目前软件测试行业的发展如何?第三方软件检测机构又是否是未来软件测试的趋势呢?接下来我们将从多个角度为您详细解答。 目前软件测试行业呈现快…

老师检查家庭作业的作用

在教育体系中,老师检查家庭作业是一种常见的教学方式,旨在帮助学生巩固课堂所学知识,提高自学能力,以及培养良好的学习习惯。家庭作业是学生学习过程中不可或缺的一环,而老师对家庭作业的检查则起到了至关重要的作用。…

内容营销频频出圈,这些品牌号做对了什么?

小红书拥有大量的年轻用户,通过运营品牌号既能降低投放成本,又能更好地连接消费者和品牌,在平台完成一站式闭环营销。 今天就借助几个成功案例,来分析下他们是如何搭建官方账号,通过内容运营吸引更多用户,实…

航天博物馆3D虚拟交互展厅让大众对科技发展有更深切的理解和感受

博物馆作为人们了解历史、文化和艺术的重要场所,现在可以通过VR全景技术来进行展览,让参观者身临其境地感受历史文化的魅力。本文将介绍博物馆VR全景的特点、优势,以及如何使用VR全景技术来使得博物馆的展览和教育活动更丰富。 VR数字博物馆…

Python基础:生成器(Generators)和生成器表达式(Generator Expressions)详解

生成器(Generators)和 生成器表达式(Generator Expressions)是 Python 中用于处理迭代器和序列数据的强大工具。它们允许你按需生成值,而不是一次性生成所有值,从而节省内存和提高性能。 1. 生成器&#x…

【完整思路模型代码】2023年第十三届APMCM亚太地区大学生数学建模竞赛C题

2023年第十三届APMCM亚太地区大学生数学建模竞赛C题【完整数据、思路、模型、代码】 C题 中国新能源电动汽车的发展趋势 该题并没有提供数据集,对所需数据进行收集整理是对题目进行求解的基础。在本题中,主要需要以下数据:新能源汽车历史销…

Python入门指南之基本概率和语法基础

文章目录 一、基本概念二、控制流三、函数四、模块五、数据结构六、面向对象的编程七、输入输出八、异常九、Python标准库关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战…

漏洞复现--万户ezoffice FileCheckTemplateEdit SQL注入

免责声明: 文章中涉及的漏洞均已修复,敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直…

玻色量子携最新相干光量子计算机惊艳亮相2023数字经济大会

7月4日至7日,2023全球数字经济大会在北京国家会议中心成功举办。该大会共有100企业参展,上市公司超40家,展区遴选展示了一批国内外数字经济产业的重要成果及重点打造的数字经济基础设施。作为北京市光量子计算领域的唯一一家代表企业&#xf…

竞赛选题 题目:垃圾邮件(短信)分类 算法实现 机器学习 深度学习 开题

文章目录 1 前言2 垃圾短信/邮件 分类算法 原理2.1 常用的分类器 - 贝叶斯分类器 3 数据集介绍4 数据预处理5 特征提取6 训练分类器7 综合测试结果8 其他模型方法9 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 基于机器学习的垃圾邮件分类 该项目…