python 还原梯度下降算法实现一维线性回归


Posted in Python onOctober 22, 2020

首先我们看公式:

python 还原梯度下降算法实现一维线性回归

这个是要拟合的函数

然后我们求出它的损失函数, 注意:这里的n和m均为数据集的长度,写的时候忘了

python 还原梯度下降算法实现一维线性回归

注意,前面的theta0-theta1x是实际值,后面的y是期望值
接着我们求出损失函数的偏导数:

python 还原梯度下降算法实现一维线性回归

最终,梯度下降的算法:

python 还原梯度下降算法实现一维线性回归

学习率一般小于1,当损失函数是0时,我们输出theta0和theta1.
接下来上代码!

class LinearRegression():

  def __init__(self, data, theta0, theta1, learning_rate):
    self.data = data
    self.theta0 = theta0
    self.theta1 = theta1
    self.learning_rate = learning_rate
    self.length = len(data)

  # hypothesis
  def h_theta(self, x):
    return self.theta0 + self.theta1 * x

  # cost function
  def J(self):
    temp = 0
    for i in range(self.length):
      temp += pow(self.h_theta(self.data[i][0]) - self.data[i][1], 2)
    return 1 / (2 * self.m) * temp

  # partial derivative
  def pd_theta0_J(self):
    temp = 0
    for i in range(self.length):
      temp += self.h_theta(self.data[i][0]) - self.data[i][1]
    return 1 / self.m * temp

  def pd_theta1_J(self):
    temp = 0
    for i in range(self.length):
      temp += (self.h_theta(data[i][0]) - self.data[i][1]) * self.data[i][0]
    return 1 / self.m * temp

  # gradient descent
  def gd(self):
    min_cost = 0.00001
    round = 1
    max_round = 10000
    while min_cost < abs(self.J()) and round <= max_round:
      self.theta0 = self.theta0 - self.learning_rate * self.pd_theta0_J()
      self.theta1 = self.theta1 - self.learning_rate * self.pd_theta1_J()

      print('round', round, ':\t theta0=%.16f' % self.theta0, '\t theta1=%.16f' % self.theta1)
      round += 1
    return self.theta0, self.theta1

def main():
	data = [[1, 2], [2, 5], [4, 8], [5, 9], [8, 15]] # 这里换成你想拟合的数[x, y]
	 # plot scatter
  x = []
  y = []
  for i in range(len(data)):
    x.append(data[i][0])
    y.append(data[i][1])
  plt.scatter(x, y)

  # gradient descent
  linear_regression = LinearRegression(data, theta0, theta1, learning_rate)
  theta0, theta1 = linear_regression.gd()

  # plot returned linear
  x = np.arange(0, 10, 0.01)
  y = theta0 + theta1 * x
  plt.plot(x, y)
  plt.show()

到此这篇关于python 还原梯度下降算法实现一维线性回归 的文章就介绍到这了,更多相关python 一维线性回归 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
在Python中处理日期和时间的基本知识点整理汇总
May 22 Python
Python函数的周期性执行实现方法
Aug 13 Python
一文总结学习Python的14张思维导图
Oct 17 Python
python图书管理系统
Apr 05 Python
解决Spyder中图片显示太小的问题
Apr 27 Python
python 把文件中的每一行以数组的元素放入数组中的方法
Apr 29 Python
python 3.6.5 安装配置方法图文教程
Sep 18 Python
python flask框架实现传数据到js的方法分析
Jun 11 Python
python批量爬取下载抖音视频
Jun 17 Python
关于PyTorch 自动求导机制详解
Aug 18 Python
Python with标签使用方法解析
Jan 17 Python
Python中flatten( ),matrix.A用法说明
Jul 05 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
Oct 22 #Python
python处理写入数据代码讲解
Oct 22 #Python
基于Python爬取股票数据过程详解
Oct 21 #Python
OpenCV利用python来实现图像的直方图均衡化
Oct 21 #Python
Python实现手势识别
Oct 21 #Python
利用Python优雅的登录校园网
Oct 21 #Python
python 使用三引号时容易犯的小错误
Oct 21 #Python
You might like
PHP原理之异常机制深入分析
2010/08/08 PHP
php使用pdo连接报错Connection failed SQLSTATE的解决方法
2014/12/15 PHP
PHP实现基于文本的摩斯电码生成器
2016/01/11 PHP
PHP操作XML中XPath的应用示例
2019/07/04 PHP
jQuery find和children方法使用
2011/01/31 Javascript
Jquery validation remote 验证的缓存问题解决方法
2014/03/25 Javascript
node.js中的fs.unlinkSync方法使用说明
2014/12/15 Javascript
Treegrid的动态加载实例代码
2016/04/29 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
2016/10/10 Javascript
Angular2平滑升级到Angular4的步骤详解
2017/03/29 Javascript
Vue2.0结合webuploader实现文件分片上传功能
2018/03/09 Javascript
JS中实现一个下载进度条及播放进度条的代码
2019/06/10 Javascript
微信小程序实现录音功能
2019/11/22 Javascript
linux系统使用python获取cpu信息脚本分享
2014/01/15 Python
python协程用法实例分析
2015/06/04 Python
Python判断Abundant Number的方法
2015/06/15 Python
python字典基本操作实例分析
2015/07/11 Python
python实现dijkstra最短路由算法
2019/01/17 Python
python flask解析json数据不完整的解决方法
2019/05/26 Python
浅谈python多进程共享变量Value的使用tips
2019/07/16 Python
python用TensorFlow做图像识别的实现
2020/04/21 Python
python属于软件吗
2020/06/18 Python
keras 简单 lstm实例(基于one-hot编码)
2020/07/02 Python
Python ConfigParser模块的使用示例
2020/10/12 Python
CSS3 分类菜单效果
2019/05/27 HTML / CSS
植物选择:Botanic Choice
2017/02/15 全球购物
Sunglass Hut巴西网上商店:男女太阳镜
2020/10/04 全球购物
乡镇干部先进事迹材料
2014/02/03 职场文书
小摄影师教学反思
2014/04/27 职场文书
科长竞聘演讲稿
2014/05/16 职场文书
关于责任的演讲稿
2014/05/20 职场文书
2014年学习委员工作总结
2014/11/14 职场文书
顶岗实习协议书
2015/01/29 职场文书
机关干部纪律作风整顿心得体会
2016/01/23 职场文书
如何书写你的职业生涯规划书?
2019/06/27 职场文书
python基础之模块的导入
2021/10/24 Python