python sklearn 梯度下降法_用Python实现一元线性回归的梯度下降

知乎markdown展示有问题,不能正确显示数据公式,如果想看数学公式,请移步:用python实现一元线性回归的梯度下降_weixin_36198467的博客-CSDN博客

线性回归

线性回归公式:$h_θ$ = $θ_0$ + $θ_1x$

平方差代价函数:$J(θ)$ = $frac1{2m}sum_{i=1}^{m}{(h_θ(x^{(i)}) - y^{(i)})}^2$

梯度下降

$θ_j := θ_j - αfrac∂ {∂ θ_j}J(θ_0,θ_1)$

使用上面的公式不断的更新代价函数$J(θ)$,直到$J(θ)$收敛或者不再发散,其中:

$frac∂ {∂ θ_j}J(θ_0,θ_1)$ = $frac∂{∂θ_j}frac1{2m} sum_{i=1}^{m}(θ_0 +θ_1x^{(i)} - y^{(i)})^2$

$j = 0:frac∂ {∂ θ_0}J(θ_0,θ_1) = frac1msum_{i=1}^{m}(h_θ(x^{(i)}) - y^{(i)})$

$j = 1:frac∂ {∂ θ_1}J(θ_0,θ_1) = frac1msum_{i=1}^{m}(h_θ(x^{(i)}) - y^{(i)}) * x^{(i)}$

算出代价函数$j$的斜率后,将其代回梯度下降算法,代入之后的线性回归的梯度下降算法为: $θ_0 := θ_0 - αfrac1msum_{i=1}^{m}(h_θ(x^{(i)}) - y^{(i)})$

$θ_1 := θ_1 -αfrac1msum_{i=1}^{m}(h_θ(x^{(i)}) - y^{(i)}) * x^{(i)}$

不断重复该过程直到收敛或者不再发散。

python代码实现

import 

11a1fa3fb65ca184c8cd93a56262033b.png

复盘

平方差代价函数:$J(θ)$ = $frac1{2m}sum_{i=1}^{m}{((θ_0 + θ_1x) - y^{(i)})}^2$ 梯度下降法求解的过程就是通过不断的迭代,通过不同的$θ_0 和 θ_1$的组合,来求$J(θ)$的值,使得$J(θ)$最小的那个组合,就是线性回归模型中最优的$θ_0 和 θ_1$。 下面,我们使用python来求解:

from 

89b7f1248bc063b000da41bc25ef2ec6.png

通过观察可得,曲面大概在x = 0.5,y = 0.5点的点上取得最小值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值