回归- Regression

article/2025/10/1 15:48:55

回归- Regression

——————————————————————————————————————————

  • 回归- Regression
    • 线性回归Linear regression
      • 模型表示Model representation
      • 代价函数Cost function
      • 目标Goal
    • 多项式回归
    • 加权线性回归
    • 一般线性回归
      • 通用的指数概率分布
      • 伯努利分布
      • 高斯分布
    • 微分与导数1
      • 微分
      • 导数
      • 方向导数
      • 梯度
    • 梯度下降算法
      • 基本思想
      • 流程
      • 批量梯度下降
      • 随机梯度下降
      • 特征归一化
      • 步长的选择
      • 优缺点
      • 随机梯度下降的改进
    • 最小二乘法
      • 代价函数Cost function
      • 求解
      • 矩阵不可逆解决方法
      • 优缺点
    • 逻辑回归 -Logistic regression
      • 逻辑回归模型
      • 代价函数
      • 二分类问题
        • 对数似然损失函数
      • 优点
    • 多类分类问题
    • 其他优化算法
      • 牛顿法2
      • 拟牛顿法3
      • DFP算法4
      • BFGS算法5
      • L-BFGS 算法Limited-memory BFGS6
    • Softmax回归7
    • 过拟合问题8
    • 类别不平衡问题9

线性回归(Linear regression)

线性回归属于监督学习,方法和监督学习是一样的,先给定一个训练集,根据训练集学习出一个线性函数,然后测试这个函数训练的好不好(即此函数是否足够拟合训练集数据),挑选出最好的函数(cost function最小)即可

思想:学习一个线性模型(通过属性的线性组合来进行预测的函数)以尽可能准确的预测实值输出标记
处理:1、值间存在序关系转化为连续值。2、属性值间不存在序关系转化为多维向量。

模型表示(Model representation)

因为是线性回归,所以学习到的函数为线性函数,即直线函数

hθ(x)=θ0+θ1x1+...+θnxn

xn 为特征, n 为特征数目,hθ(x) 表示假设函数。为了方便,记 x0=1 ,于是得到:
hθ(x)=ni=0θixi=θTx

其中 θ x 都是向量。

代价函数(Cost function)

评价线性函数拟合的好不好,我们需要使用到代价函数,代价函数越小,说明线性回归地越好,即和训练集拟合地越好,当然最小就是0,即完全拟合

J(θ)=J(θ0,θ1,,θn)=12mi=0(hθ(x(i))y(i))2

y(i) 称之为 目标变量; x(i) 为第 i 个训练样本的所有输入特征,可以认为是一组特征向量;m 为训练样本的数目。

目标(Goal)

minimizeθJ(θ)

均方误差最小化。

多项式回归

很多时候,线性回归不能很好的拟合给定的样本点

hθ(x)=θ0+θ1(size)+θ2(size)2+θ3(size)3

加权线性回归

在学习过程中,特征的选择对于最终学习到的模型的性能有很大影响,于是选择用哪个特征,每个特征的重要性如何就产生了加权的线性回归

它的中心思想是在对参数进行求解的过程中,每个样本对当前参数值的影响是有不一样的权重的。

加权线性回归学习过程

Fitθtominimize12mi=0wi(y(i)θTx(i))2OutputθTx

与传统的线性回归的区别在于对不同的输入特征赋予了不同的非负值权重,权重越大,对于代价函数的影响越大。

权重计算公式为

w(i)=exp(x(i)x)22τ2

其中, x 是要预测的特征,表示离 x 越近的样本权重越大,越远的影响越小。

理解 x 为某个预测点,x(i) 为样本点,样本点距离预测点越近,贡献的误差越大,权值越大;越远则贡献的误差越小,权值越小。

预测点的选取:可以选取样本点。

算法思路:假设预测点取样本点中的第 i 个样本点,遍历1到 m 个样本点,算出每一个样本点与预测点的距离,就可以计算出每个样本贡献误差的权值,可以看出 w 是一个有 m 个元素的向量。

代入 J(θ)

J(θ)=12mi=0wi(y(i)θTx(i))2=yTwyθTxTwyyTwTxθ+θTxTwxθ

利用最小二乘法,可以计算出一个 θ 向量

θJ(θ)=xTwyxTwy+2xTwxθ=0

θ=(xTwx)1xTwy

一般线性回归

线性回归是以高斯分布为误差分析模型。逻辑回归采用的是伯努利分布分析误差。而高斯分布、伯努利分布、贝塔分布、迪特里特分布,都属于指数分布。

通用的指数概率分布

p(y;η)=b(y)exp(ηTT(y)a(η))

伯努利分布

p(y;ϕ)=ϕy(1ϕ)1y=exp(ylog(ϕ)+(1y)log(1ϕ))=exp(ylog(ϕ1ϕ)+log(1ϕ))

高斯分布

p(y;μ)=12πexp(12(yμ)2)=12πexp(12(y)2)exp(μy12μ2)

——————————————————————————————————————————

微分与导数[1]

微分

微分描述的是当函数自变量的变化量 Δx 在足够小的改变时函数值的改变情况,是对函数局部变化率的一种线性描述,在足够微小局部,可以用直线去近似代替曲线。

这里写图片描述

设函数 y=f(x) 在点 x0 的某个邻域内有定义, x0+Δx 也在此区间,当 Δx 在做足够小变化时,若函数的增量 Δy=f(x0+Δx)f(x0) 可表示为 Δy=AΔx+ο(Δx) (其中 A 是不依赖于 Δx 的常数, ο(Δx) Δx 的高阶无穷小),则称函数 y=f(x) x0 点是可微的, AΔx 称作函数在点 x0 相应于自变量增量 Δx 的微分,记作

dy=AΔx

由于 ο(Δx) Δx 的高阶无穷小,所以函数的微分( dy=AΔx )是函数增量( Δy=AΔx+ο(Δx) )的主要部分,且是 Δx 的线性函数,所以函数的微分是函数的线性主部。当 Δx 足够小时记作微元 dx ,实际上由导数的定义可知, A=ΔyΔx|(Δx>0)=dydx ,所以 dy=f(x)dx

由上述思路可以推广至多元函数的微分。

若二元函数 z=f(x,y) 在点 (x,y) 处的全增量 Δz=f(x+Δx,y+Δy)f(x,y) 可以表示成 Δz=AΔx+BΔy+ο(ρ) ,其中 ρ=(Δx)2+(Δy)2 ,A和B不依赖于 Δx Δy 仅与 x,y 有关,则称函数 f(x,y) 在点 (x,y) )可微,将 AΔx+BΔy 称为函数 f(x,y) 在点 x,y 的全微分,记作

dz=df=AΔx+BΔy

或者函数 z=f(x,y) 在点 (x,y) 的两个偏导数为 fx(x,y) fy(x,y) 时,

dz=zxdx+zydy=fxdx+fydy=fx(x,y)dx+fy(x,y)dy

三元函数的全微分记作

du=uxdx+uydy+uzdz

导数

导数是函数的局部性质,函数在某点的导数描述了这个函数在这个点的变化率,几何上表现为函数在该点处的切线的斜率。

这里写图片描述

设函数 y=f(x) 在点 x0 的某个邻域内有定义,当自变量 x x0 处有变化 Δx(Δx=xx0 x 也在该邻域内) 时,相应的函数变化 Δy=f(x)f(x0) ;如果 Δy Δx 之比 ΔyΔx Δx 趋于0时极限存在,则称函数 y=f(x) 在点 x0 处可导,并称这个极限值为函数 y=f(x) 在点 x0 处的导数,记为 f'(x0) ,即

f(x0)=limΔx0f(x)f(x0)xx0

如果函数 y=f(x) 在某开区间内每一点都可导,则称函数 f(x) 在该区间内可导;函数 y=f(x) 对于该区间内的每一个确定的 x 值都对应着一个确定的导数,此时就构成一个新的函数,称这个函数为原函数 y=f(x) 的导函数,简称导数,记作 y'(f'(x)dydxdf(x)dx)

导数和微分的区别从定义上就可以很清楚了,导数是源自于函数值随自变量增量的变化率,即 ΔyΔx 的极限,而微分则源自于微量的分析,即 Δx 在足够小变化时函数值的变化 Δy 可以表示为 AΔx Δx 的高阶小量 ο(Δx) 之和;导数的值是函数在该点处切线的斜率而微分的值是函数沿切线方向上函数值的增量, dy=f'(x)dx

方向导数

导数描述了函数在某点处的变化率,方向导数顾名思义就是研究函数在一点的某一方向上的变化率。

Alt text这里写图片描述

设函数 z=f(x,y) 在点 P(x,y) 的某一邻域 U(P) 内有定义,在 U(P) 内找一方向任意的点 P'(x+Δx,y+Δy) ,从点 P 引射线 l P' 点,设X轴正向到射线 l 的转角为 α Y 轴正向到射线ll的转角位 β,则 cosα cosβ l 方向的方向余弦,即为 l 的单位向量 αβ l 的方向角,如下图。

这里写图片描述

若函数 z=f(x,y) 的增量 Δz=f(x+Δx,y+Δy)f(x,y) PP' 两点间距 ρ=(Δx)2+(Δy)2 之比在 P' 沿着 l⃗  方向趋于 P 时(ρ>0)极限存在,则称这极限为函数在点 P 沿方向 l⃗  的方向导数。记为

fx|p=limρ0+f(x+Δx,y+Δy)f(x,y)ρ

偏导数 fx=limΔx>0f(x+Δx,y+y)f(x,y)Δx , fy=limΔy>0f(x,y+Δy)f(x,y)Δy 分别是函数在某点沿平行于坐标轴的直线的变化率。

设函数 z=f(x,y) 在点 P(x,y) 处可微,则其增量可以表示为

f(x+Δx,y+Δy)f(x,y)=fxΔx+fyΔy+ο(ρ)

两边同除以 ρ 得到

f(x+Δx,y+Δy)f(x,y)ρ=fxΔxρ+fyΔyρ+ο(ρ)ρ

由下图知 Δxρ=cosα , Δyρ=cosβ ,则

f(x+Δx,y+Δy)f(x,y)ρ=fxcosα+fycosβ+ο(ρ)ρ

故方向导数

fl=limρ>0f(x+Δx,y+Δy)f(x,y)ρ=fxcosα+fycosβ

由上思路推广可得三元函数方向导数

fl=limρ>0f(x+Δx,y+Δy,z+Δz)f(x,y,z)ρ=fxcosα+fycosβ+fzcosγ

fl=fxcosα+fycosβ+fzcosγ

其中 αβγ l 的方向角,cosαcosβcosγ l 的方向向量。

梯度

由上方向导数的定义可知,函数 z=f(x,y) 在某点因为选择的方向不同所以其在该点的方向导数是不相同的,现在思考一个问题:函数沿什么方向的方向导数为最大?

我们已经知道函数的方向导数

fl=fxcosα+fycosβ

设向量 G=(fx,fy) l0=(cosα,cosβ) (|l0|=1) ,则

fl=fxcosα+fycosβ=Gl0

由向量相乘的知识可知,当向量 G l0 方向一致时,方向导数 fl 最大,其最大值为 maxfl=|G| 。所以函数的方向导数在 G 的方向上变化率最大, G 的模为最大变化率之值。在几何上向量 G 表现为函数等值线上点P处的法向量。

设函数 z=f(x,y) 在点 P(x,y) 处可偏导,称向量 G 为函数 z=f(x,y) 在点 P(x,y) 处的梯度(gradient)即

gradf(x,y)=(fx,fy)=fxi+fyj=f

梯度下降算法

基本思想

利用负梯度方向来决定每次迭代的新的搜索方向,使得每次迭代能使待优化的目标函数逐步减小。
是利用一阶的梯度信息找到函数局部最优解的一种方法,也是机器学习里面最简单最常用的一种优化方法。

流程

1、先确定向下一步的步伐大小,称为Learning rate;
2、任意给定一个 θ 初始值
3、确定一个向下的方向,并向下走预先规定的步伐,并更新; θj

4、当下降的高度小于某个定义的值,则停止下降。

特点:1、初始点不同,获得的最小值也不同,因此梯度下降求得的只是局部最小值;2、越接近最小值时,下降速度越慢。

批量梯度下降

先考虑只有一个训练样本的情况

J(θ)=12mi=0(hθ(x(i))y(i))2=12(Xθy)T(Xθy)θjJ(θ)=θj12(hθ(x)y)2=212(hθ(x)y)θj(hθ(x)y)=(hθ(x)y)θj(ni=0θixiy)=(hθ(x)y)xj

得到跟新规则

θj:=θji=1m(hθ(x(i))y(i))xj(i)

对于如下更新参数的算法: 直接把单个样本代价函数的梯度换为多个样本代价函数的梯度

Repeat{θj:=θji=1m(hθ(x(i))y(i))xj(i)(simultaneouslyupdateθjforj=0,...,n)}

由于在每一次迭代都考察训练集的所有样本,而称为批量梯度下降 batch gradient descent。

随机梯度下降

如果参数更新计算算法如下

loop{fori=1tom,{θj:=θj(hθ(x(i))y(i))xj(i)(forj=0,...,n)}}

这里我们按照单个训练样本更新 θj 的值,称为随机梯度下降 stochastic gradient descent ,属于在线学习算法。 同样也要遍历整个训练集,但和batch gradient descent不同的是,我们每次只使用单个训练样本来更新 α ,依次遍历训练集,而不是一次更新中考虑所有的样本。

特征归一化

核心思想:确保特征在相似的尺度里
目标:使每一个特征值都近似的落在 1xi1 的范围内。
作用:加快梯度下降的执行速度
简单的归一化
除以每组特征的最大值

均值归一化
xiμi 替换 xi 使特征的均值近似为 0(但是不对 x0=1 处理),均值归一化的公式是

xixiμiSi

其中 Si 可以是特征的取值范围(最大值-最小值),也可以是标准差(standard deviation).

步长的选择

如果 α 太小,会收敛很慢
如果 α 太大,就不能保证每一次迭代 J(θ) 都减小,就不能保证 J(θ) 收敛
选择 α 经验的方法: 约3倍于前一个数。开始迭代,学习率大,慢慢的接近最优值时,学习率变小。

优缺点

需要选择合适的 learning rate α ;
需要很多轮迭代;
但是即使 n 很大的时候效果也很好;
需要特征归一化

随机梯度下降的改进

在每次迭代时,调整更新步长α 的值, 随着迭代的进行, α 越来越小,这会缓解系数的高频波动

每次迭代,改变样本的优化顺序。随机选择样本来更新回归系数。可以减少周期性波动,因为样本顺序改变,使迭代不再形成周期性

——————————————————————————————————————————

最小二乘法

梯度下降算法给出了一种计算 θ 的方法,但需要迭代,比较费时。最小二乘法是一种直接利用矩阵运算可以得到 θ 值的算法

代价函数(Cost function)

将输入特征 x 和对应的结果 y 表示成矩阵形式有:

X=(x(1))T(x(2))T(x(m))T,y=y(1)y(2)y(m)

对于预测模型有

hθ(x)=ni=0θixi=θTx


hθ(x(i))=(x(i))Tθ

于是

Xθy=(x(1))Tθ(x(2))Tθ(x(m))Tθy(1)y(2)y(m)=hθ(x(1))y(1)hθ(x(2))y(2)hθ(x(m))y(m)

可以得到

J(θ)=12mi=0(hθ(x(i))y(i))2=12(Xθy)T(Xθy)

求解

矩阵运算来得到梯度

θJ(θ)=θ12(Xθy)T(Xθy)=12θ(θTXTXθθTXTyyTXθ+yTy)=12θtr(θTXTXθθTXTyyTXθ+yTy)=12θ(trθTXTXθ2tryTXθ)=12(XTXθ+XTXθ2XTy)=XTXθXTy

J(θ) 最小值方法是令

ddθjJ(θ)=0

然后得到 θ 的值

θ=(XTX)1XTy

矩阵不可逆解决方法

(XTX) 不可逆的情况下,我们就不能求得最小二乘解。也就是说, X y 之间不存在最优的线性模型。

岭回归(Ridge Regression)
虽没有最优解,但可以有很多的近似解。岭回归就是一种求解近似解的方法。岭回归是在平方误差的基础上增加正则项来建立模型,从而使得矩阵非奇异。

J(θ)=12((mi=0(y(i)θTx(i))2)+λθ2)=XTXθXTy+λθ

然后得到 θ 的值
θ=(XTX+λI)1XTy

为了选取最优的 λ 值,可以采取交叉验证法。

优缺点

不需要选择 α
不需要迭代,一次搞定;
但是需要计算 (XTX)1 ,其时间复杂度是 O(n3)
如果n很大,就非常慢
不需要特征归一化

——————————————————————————————————————————

逻辑回归 -Logistic regression

逻辑回归常用于垃圾邮件分类,天气预测、疾病判断和广告投放

对于二分类问题来说,线性回归模型的假设函数输出值 hθ(x) 可以大于1也可以小于0。这个时候我们引出逻辑回归,逻辑回归的假设函数输出介于0与1之间,既

0hθ(x)1

逻辑回归模型

假设函数

hθ(x)=g(θTx)

g 称为Sigmoid function 或者Logistic function, 具体表达式为:
y=g(z)=11+ez

这里写图片描述

综合上述两式,我们得到逻辑回归模型的数学表达式

hθ(x)=11+eθTx

其中 θ 是参数

直观解释:对Sigmoid function 转化可以得到

lny1y=θTx

就是用线性回归模型的预测结果逼近真实标记的对数几率。 hθ(x) = 对于给定的输入 xy=1 时估计的概率
即:
hθ(x)=P(y=1|x;θ)

代价函数

J(θ)=12i=1m(hθ(x(i))y(i))2

这里取 hθ(x)=11+eθTx ,会存在一个问题,也就是逻辑回归的代价函数是“非凸”的。所以需要其他形式的代价函数来保证逻辑回归的成本函数是凸函数。

二分类问题

对于因变量 y=0 1 这样的二分类问题
假设

P(y=1|x;θ)=hθ(x)


P(y=0|x;θ)=1P(y=1|x;θ)=1hθ(x)

进一步表示为
P(y|x;θ)=(hθ(x))y(1hθ(x))(1y)

对数似然损失函数

似然估计

L(θ)=p(y|x;θ)=i=1mp(y(i)|x(i);θ)=i=1m(hθ(x(i)))y(i)(1hθ(x(i)))(1y(i))

取对数得到代价函数

L(θ)=log(i=1m(hθ(x(i)))y(i)(1hθ(x(i)))(1y(i)))=i=1myilog(hθ(x(i)))+i=1m(1y(i))log(1hθ(x(i)))

令该导数为0,会发现它无法解析求解,所以只能借助迭代算法

θjL(θ)=y1g(θTx)(1y)11g(θTx)θjg(θTx)=y1g(θTx)(1y)11g(θTx)g(θTx)(1g(θTx))θjθTx=(y(1g(θTx))(1y)g(θTx))xj=(yhθ(x))xj

得到类似的更新公式

θj:=θjαi=0m(hθ(x(i))y(i))x(i)j

优点

1、直接对分类可能性建模,无需事先假设数据分布,这样就避免了假设分布不准确问题
2、对率函数是任意阶可导凸函数,有很好的数学性质

——————————————————————————————————————————

多类分类问题

策略:
一对一

一对其余
对于多类分类问题,可以将其看做成二类分类问题:保留其中的一类,剩下的作为另一类。
对于每一个类 i 训练一个逻辑回归模型的分类器,并且预测 y=i 时的概率;
对于一个新的输入变量 x <script type="math/tex" id="MathJax-Element-247">x</script>, 分别对每一个类进行预测,取概率最大的那个类作为分类结果。

多对多

——————————————————————————————————————————

其他优化算法

牛顿法[2]

拟牛顿法[3]

DFP算法[4]

BFGS算法[5]

L-BFGS 算法(Limited-memory BFGS)[6]

Softmax回归[7]

过拟合问题[8]

类别不平衡问题[9]

——————————————————————————————————————————


http://chatgpt.dhexx.cn/article/AVbcOdlV.shtml

相关文章

日本股市预测JPX: LGBM Regressor (Fit in 1 Min)

LightGBM 与 XGBoost 目前几乎所有具有结构化数据集的竞赛的基础学习者。这主要是因为 LightGBM 的实现&#xff1b;它不会像 XGBoost 在默认设置中那样精确搜索最佳分割&#xff0c;而是通过直方图近似&#xff08;XGBoost 现在也具有此功能&#xff0c;但仍不如 LightGBM 快&…

Regression 2

一、Where does the error come from&#xff1f;[error due to bias and variance] 我们将寻找function看作是在打靶&#xff0c;靶的正中心为 f ^ \hat{f} f^​&#xff0c;每次collect data训练出来的 f ∗ f^{*} f∗为打在靶上面的点 Variance取决于model的复杂程度和data的…

注意:Classifier和Regressor的score函数,是不同的!

下面以sklearn的KNeighbors模型举例&#xff1a; 1.对于分类&#xff08;Classifier&#xff09;模型&#xff0c;score函数计算的是精确度。底层是accuracy_score http://scikit-learn.org/stable/modules/generated/sklearn.neighbors.RadiusNeighborsClassifier.html#skle…

3.Regression(二)

总结自&#xff1a;机器学习&#xff08;李宏毅&#xff0c;台湾大学&#xff09; 上一篇文章中&#xff0c;我们选用的model是 y b w ∙ x c p ybw \bullet x_{cp} ybw∙xcp​&#xff0c;可以选用其它的model吗&#xff1f;我们选用的loss function是 L ( f ) ∑ ( ( y ^ …

Regularization(正则化)

前言 这一章还是紧接着上一章的&#xff0c;在上一章我们讨论了logistic regrsssion(逻辑回归)&#xff0c;在更早我们还讨论了linear regression(线性回归)&#xff0c;对于这两种问题&#xff0c;我们在进行用函数去预测结果时&#xff0c;我们根据已知的数据集去推测一个函数…

Linear Regression Logistic Regression

Linear Regression & Logistic Regression Keywords List keywords you may encounter when exploring LR(Logistic Regression), or a bigger concept – ML(machine learining)&#xff1a; 监督学习 损失函数 梯度下降 学习率 激活函数 神经网络 Let’s kick off wi…

RandomForestClassifier/Regressor

1.集成算法&#xff08;ensemble &#xff09; 1.集成评估器 bagging多个相互独立的评估器&#xff0c;对其预测进行平均或多数表决原则来决定评估器的结果boosting基评估器相关&#xff0c;按顺序一一构建&#xff0c;结合若评估器构成强评估器 2.RandomForestClasifier 1.决策…

Regression 回归

李宏毅老师机器学习课程笔记——Regression 回归 一、理论 问题&#xff1a;已知一批宝可梦样本进化前的特征值x_cp, x_s, x_np, x_w, x_n&#xff0c;预测宝可梦升级后的CP值。模型的目标就是找到一个最合适的函数F(X)Y&#xff1a; 特征条件X包括{x_cp, x_s, x_np, x_w, x_…

线性回归正则化 regularized linear regression

线性回归正则化regularized linear regression 在前几篇博客中介绍了一元线性回归http://blog.csdn.net/u012328159/article/details/50994095和多元线性回归http://blog.csdn.net/u012328159/article/details/51029695等线性回归的知识&#xff0c;具体请参见本人其他博客。但…

# Logistics Regression

目录 一 logistics regression 1 一点介绍 2 评价 3 一点应用 4 代码流程 5 上代码&#xff01;&#xff01;&#xff01; 一 logistics regression 1 一点介绍 逻辑回归是一个分类模型&#xff0c;其突出特点即 模型简单、可解释性强 2 评价 优点 实现简单&#xff0…

Python-Regression

本文归纳整理了线性回归&#xff08;LinearRegression&#xff09;、岭回归&#xff08;Ridge&#xff09;、Lasso回归&#xff08;Lasso&#xff09;、弹性网&#xff08;ElasticNet&#xff09;、K近邻、SVM等10多种机器学习模块sklearn中回归算法调用及实现过程&#xff0c;…

大数据挖掘永恒的定律?符号回归(Symbolic Regressor)

大数据挖掘永恒的定律&#xff1f;符号回归(Symbolic Regressor) 符号回归简介 符号回归是一种机器学习技术&#xff0c;旨在识别一个潜在的数学表达式。它首先建立一个朴素随机公式的总体来表示已知自变量和它们的因变量目标之间的关系&#xff0c;以预测新数据。每一个连续的…

Regression

//李宏毅视频官网&#xff1a;http://speech.ee.ntu.edu.tw/~tlkagk/courses.html 点击此处返回总目录 //邱锡鹏《神经网络与深度学习》官网&#xff1a;https://nndl.github.io 今天主要讲的是Regression。会通过一…

从零接入微信公众号(Java实现 附源码)

目录 从零接入微信公众号 一、微信测试号的申请与关注 1.申请 2.访问域名配置 3.关注 二、测试号快速生成底部导航栏 1.获取 access_token 2.自定义菜单 三、微信公众号网页授权 1.网页授权原理 2.代码实现 1)NetUtil.java 2)Oauth2Token.java 3)WxUserDO.java…

前后端分别部署教程 ---- 第三部分项目部署和挂载到微信公众号

3. 前端 这里介绍的是idea开发工具下的项目打包 3.1 项目打包 一定要在指定项目路径下打开 Terminal&#xff0c;不然会打错项目的包. 右击项目名称&#xff0c;然后点击 Open in Terminal&#xff1a; 在下面的 Terminal窗口中&#xff0c; 输入打包命令&#xff1a; npm …

springboot+h5页面+微信公众号获取微信用户信息

springboot项目&#xff0c;h5页面通过微信公众号获取微信用户信息 最近本人有一个项目需求&#xff0c;微信公众号里点击一个菜单进入一个商城购物系统。 对于在微信公众号还是小白的我来说难度有点大&#xff0c;但是做完后发现也就这样&#xff0c;用多了就熟悉了。下面记录…

【公众号】微信进入公众号链接自动获取授权登陆

文章目录 前言一、准备二、开发2.1 搭建项目2.2 WeixinUtil 工具2.3 回调接口与登陆接口2.4 过滤器自动登陆2.4 其他类2.5 测试 三、总结 前言 最近项目上有一个需求&#xff0c;用户反映每次从微信打开链接都需要手动登陆&#xff0c;比较繁琐&#xff0c;想点开微信连接后自…

java向微信公众号---发送模板和图文消息

微信公众号初次开发 其他操作 项目搭建mavenapplication.ymlyml参数配置微信客户端配置 搭建完成 实现业务模板消息推送准备工作模板消息填写要求图文消息填写要求 推送模板消息推送模板消息结果——效果 推送图文消息推送图文消息工具类问题和结果 获取关注的用户openId既然有…

微信公众号接入天行机器人案例和方法

首先使用的是天行机器人&#xff1a; 1、接入基本原理&#xff1a; https://www.tianapi.com/apiview/47 申请完成后的结果如下 调用对应的接口的参数如下&#xff1a; http://api.tianapi.com/txapi/robot/index?keyae5e9a72c8d4cb1f5e096f7bb4daf1f3&questionrobot…

微信公众号的端口映射及服务开发

一. 开发准备 微信公众号申请---->实名认证---->服务器开发---->绑定服务器 PS: 这里有一点需要注意的就是, 微信开发必须是80端口或者443端口, 如果我们有云服务器主机一切都好办. 但是如果没有我们还有几个备选方案: 1. 花生壳 , net123 : 这两个都需要实名认证(…