#调试梯度
import numpy as np
import matplotlib.pyplot as pltnp.random.seed(666)
X = np.random.random(size = (1000,10))
true_theta = np.arange(1,12,dtype = float)
X_b = np.hstack([np.ones((len(X),1)),X])
y = X_b.dot(true_theta) + np.random.normal(size = 1000)
print(true_theta)
[ 1.  2.  3.  4.  5.  6.  7.  8.  9. 10. 11.]
def J(theta,X_b,y):try:return np.sum((y - X_b.dot(theta)) ** 2) / len(X_b)except:return float('inf')def dJ_math(theta,X_b,y):return X_b.T.dot(X_b.dot(theta) - y) * 2. / len(y)def dJ_debug(theta,X_b,y,epsilon = 0.01):res = np.empty(len(theta))for i in range(len(theta)):theta_1 = theta.copy()theta_1[i] += epsilontheta_2 = theta.copy()theta_2[i] -= epsilonres[i] = (J(theta_1,X_b,y) - J(theta_2,X_b,y)) / (2 * epsilon)return resdef gradient_descent(dJ,X_b,initial_theta,eta,n_iters = 1e4,epsilon = 1e-4):theta = initial_thetacur_iter = 0while cur_iter < n_iters:gradient = dJ(theta,X_b,y)last_theta = thetatheta = theta - eta * gradientif (np.abs(J(theta,X_b,y) - J(last_theta,X_b,y)) < epsilon):breakcur_iter += 1return theta
X_b = np.hstack([np.ones((len(X),1)),X])
initial_theta = np.zeros(X_b.shape[1])
eta = 0.1
theta = gradient_descent(dJ_debug,X_b,initial_theta,eta)
print(theta)

[ 1.60733388 1.98991873 2.80925629 4.00526045 4.9565647 5.82284661 6.86831506 7.92353791 8.75087035 9.900878 10.80269625]



Python机器学习:梯度下降法008如何确定梯度计算的准确性,调试梯度下降法相关推荐

  1. 最优化算法python实现篇(4)——无约束多维极值(梯度下降法)

    最优化算法python实现篇(4)--无约束多维极值(梯度下降法) 摘要 算法简介 注意事项 算法适用性 python实现 实例运行结果 算法过程可视化 摘要 本文介绍了多维无约束极值优化算法中的梯度 ...

  2. 机器学习入门系列一(关键词:单变量线性回归,梯度下降法)

    机器学习入门系列一(关键词:单变量线性回归,梯度下降法) 如上图所示,我们的目标是希望通过这些数据得到城市人口数和利润可能的对应关系,并可以通过城市人口数(利润)来预测它的利润(城市人口数),在这里我 ...

  3. 机器学习、深度学习中常用的优化算法详解——梯度下降法、牛顿法、共轭梯度法

    一.梯度下降法 1.总述: 在机器学习中,基于基本的梯度下降法发展了三种梯度下降方法,分别为随机梯度下降法,批量梯度下降法以及小批量梯度下降法. (1)批量梯度下降法(Batch Gradient D ...

  4. 机器学习基础(五十九)—— 高级优化算法(梯度下降、L-BFGS、共轭梯度)

    优化算法两大核心,一曰:方向,比如由负梯度方向给出:二曰:步长. 在机器学习领域,不管是基础的梯度下降,还是更为高级的 L-BFGS.共轭梯度,都对应的是参数学习,用来学习相关模型的参数. 1. 梯度 ...

  5. 随机梯度下降python_(史上最详细)批量梯度下降算法、随机梯度下降算法、小批量梯度下降算法python代码实现...

    伪代码: 批量梯度下降法(Batch Gradient Descent): Repeat until convergence{ } 随机梯度下降法(Stochastic Batch Gradient ...

  6. 【机器学习】<刘建平Pinard老师博客学习记录>梯度下降(Gradient Descent)

    目录 一.梯度: 二.梯度上升和梯度下降: 三.梯度下降法算法详解: 1.梯度下降的直观解释: 2.梯度下降的相关概念: 3.梯度下降的详细算法: 3.1 梯度下降法的代数方式描述: 3.2 梯度下降 ...

  7. 最小二乘法、迭代优化、坐标轴下降法(Coordinate Descent, CD)、坐标下降和梯度下降对比、梯度下降法/最速下降法

    最小二乘法.迭代优化.坐标轴下降法(Coordinate Descent, CD).坐标下降和梯度下降对比.梯度下降法/最速下降法 目录

  8. 机器学习实战(十四)Pegasos(原始估计子梯度求解器)

    目录 0. 前言 1. SVM 概念 2. Pegasos 3. 实战案例 3.1. Pegasos 学习完机器学习实战的Pegasos,简单的做个笔记.文中部分描述属于个人消化后的理解,仅供参考. ...

  9. 逻辑回归的参数计算:牛顿法,梯度下降法,随机梯度下降法

    逻辑回归的参数计算:牛顿法,梯度下降(上升)法,随机梯度下降法,批量梯度下降法 前面文章中对逻辑回归进行了讲解,下面来说一说逻辑回归的参数是怎么计算的. 逻辑回归的计算使用的是最大似然方法.记 z i ...

最新文章

  1. 时序预测竞赛之异常检测算法综述
  2. scala逻辑运算符的一览图和代码案例
  3. Docker入门-docker compose的使用
  4. ZZULIOJ 1090: 整数幂(多实例测试)
  5. leetcode 实现 strStr()
  6. idea swagger生成接口文档_Spring Boot(九)Swagger2自动生成接口文档和Mock模拟数据...
  7. SAP License:SAP中的权限与破解
  8. 解决wget下载过慢的问题
  9. linux 启动禁用显卡驱动,Linux secure boot(安全启动)时添加Nvidia显卡驱动
  10. JS-获取当前URL的参数
  11. Ubuntu 16.04-codeblocks 汉化
  12. 【Proteus仿真】CD4026秒脉冲0-9循环计数
  13. bugzilla perl mysql apache windows,windows下配置bugzilla
  14. 熟悉RT-Thread的软硬件环境【RT-Thread学习笔记 1】
  15. 中职一年级计算机学情分析,一年级学生学情分析
  16. 关于 类的常成员函数 声明和定义处 都需要加 const的原因
  17. 安卓使用MediaPlayer播放视频
  18. selenium模拟登陆教务系统
  19. modbus串口调试助手 MODBUS调试 智能仪表通讯必备软件 RS485串口通讯
  20. visual studio 2015下载地址

热门文章

  1. java spi与api,SPI和API之间的区别?
  2. [SDOI2009]地图复原 递推
  3. 【C/C++】深入理解原子操作 volatile i为什么不能保证i++的原子性
  4. Java程序员晋升之路:“Java高级核心知识全面解析
  5. sqlite3用python家外键_Django/Sqlite3为带有外键的模型添加一行
  6. python tornado websocket_Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法...
  7. CentOS7环境下搭建flume
  8. eclipse中java环境配置
  9. C语言标准库中常见字符串处理函数
  10. Summed-Area Variance Soft Shadow Mapping(SAVSM):二