python sklearn 梯度下降法_三种梯度下降方式python代码实现

梯度下降法的基本思想可以类比为一个下山的过程。假设这样一个场景:一个人被困在山上,需要从山上下来(i.e. 找到山的最低点,也就是山谷)。但此时山上的浓雾很大,导致可视度很低。因此,下山的路径就无法确定,他必须利用自己周围的信息去找到下山的路径。这个时候,他就可以利用梯度下降算法来帮助自己下山。具体来说就是,以他当前的所处的位置为基准,寻找这个位置最陡峭的地方,然后朝着山的高度下降的地方走,同理,如果我们的目标是上山,也就是爬到山顶,那么此时应该是朝着最陡峭的方向往上走。然后每走一段距离,都反复采用同一个方法,最后就能成功的抵达山谷。

948cb18a0a55c37db9bcaaeb7660d20a.png

梯度下降的三种方式:批量梯度下降,随机梯度下降,小批量梯度下降,下面我们用python代码实现这三种下降方式!

1.在实现梯度下降之前先做好准备工作.

  • 导包
  • 随机种子
  • 保存图像
  • 定义保存图像函数
  • 过滤掉讨厌的警告信息
  • 导包
import 
  • 保存图像
#保存图像
  • 随机种子
np
  • 定义保存图像函数
#定义一个保存图像的函数
  • 过滤掉讨厌的警告信息
import 

2.在做好准备工作后,我们来定义变量.

import 

然后画出图形

plt

结果如下:

5c87c17bb47bed9eb2cc77112c8c1a82.png
  • 添加新特征
x_b 
  • 创建测试数据
x_new 
  • 对测试集进行预测
line_reg

一、用批量梯度下降求解线性回归

eta 

结果如下:

5093e12595f7706fbaf2a6b3e1bdcc98.png

二、用随机梯度下降求解线性回归

theta_path_sgd 

结果如下:

1f53c59b723f0ee52942049f3a89bd28.png
from 

结果如下:

SGDRegressor(alpha=0.0001, average=False, early_stopping=False, epsilon=0.1,
eta0=0.1, fit_intercept=True, l1_ratio=0.15,
learning_rate='invscaling', loss='squared_loss', max_iter=50,
n_iter_no_change=5, penalty=None, power_t=0.25, random_state=42,
shuffle=True, tol=inf, validation_fraction=0.1, verbose=0,
warm_start=False)

查看截取,斜率

sgd_reg.intercept_,sgd_reg.coef_

结果:(array([4.25857953]), array([2.95762926]))

三、用小批量梯度下降求解线性回归

theta_path_mgd 

结果如下:

38d5196c6697ab8d996bed5e4707ab67.png

总结:梯度下降对初始值敏感,这种算法根据损失函数求偏导所得。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值