iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python简单批量梯度下降代码
  • 374
分享到

python简单批量梯度下降代码

梯度下降算法的Python实现Python梯度下降法 2022-06-04 23:06:55 374人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

简单批量梯度下降代码 其中涉及到公式 alpha表示超参数,由外部设定。过大则会出现震荡现象,过小则会出现学习速度变慢情况,因此alpha应该不断的调整改进。 注意1/m前正负号的改变 Xj的意义为j个维度的样本。

简单批量梯度下降代码

其中涉及到公式

alpha表示超参数,由外部设定。过大则会出现震荡现象,过小则会出现学习速度变慢情况,因此alpha应该不断的调整改进。

python简单批量梯度下降代码

在这里插入图片描述

注意1/m前正负号的改变

在这里插入图片描述

Xj的意义为j个维度的样本。
下面为代码部分

import numpy as np
#该处数据和linear_model中数据相同
x = np.array([4,8,5,10,12])
y = np.array([20,50,30,70,60])

#一元线性回归 即 h_theta(x)=  y= theta0 +theta1*x
#初始化系数,最开始要先初始化theta0 和theta1
theta0,theta1 = 0,0
#最开始梯度下降法中也有alpha 为超参数,提前初始化为0.01
alpha = 0.01
#样本的个数 ,在梯度下降公式中有x
m = len(x)
#设置停止条件,即梯度下降到满足实验要求时即可停止。
# 方案1:设置迭代次数,如迭代5000次后停止。
#(此处为2)方案2:设置epsilon,计算mse(均方误差,线性回归指标之一)的误差,如果mse的误差《= epsilon,即停止
#在更改epsilon的次数后,越小,迭代次数会越多,结果更加准确。
epsilon = 0.00000001
#设置误差
error0,error1 = 0,0
#计算迭代次数
cnt = 0
def h_theta_x(x):
    return theta0+theta1*x
#接下来开始各种迭代
#"""用while 迭代"""
while True:
    cnt+=1
    diff=[0,0]
    #该处为梯度,设置了两个梯度后再进行迭代,梯度每次都会清零后再进行迭代
    for i in range(m):
        diff[0]+=(y[i]-h_theta_x(x[i]))*1
        diff[1]+=(y[i]-h_theta_x(x[i]))*x[i]
    theta0 = theta0 + alpha * diff[0] / m
    theta1 = theta1 + alpha * diff[1] / m
    #输出theta值
    # ”%s“表示输出的是输出字符串。格式化
    print("theta0:%s,theta1:%s"%(theta0,theta1))
    #计算mse
    for i in range(m):
        error1 +=(y[i]-h_theta_x(x[i]))**2
    error1/=m
    if(abs(error1-error0)<=epsilon):
        break
    else:
        error0 = error1
print("迭代次数:%s"%cnt)

#线性回归结果:5.714285714285713     1.4285714285714448      87.14285714285714
#批量梯度下降结果:theta0:1.4236238440026219,theta1:5.71fESTs483960227916   迭代次数:3988
#在更改epsilon的次数后,越小,迭代次数会越多,结果更加准确。
在线性模型的代码(代码可参见另一条文章)中,得到运算结果a,b的值,与梯度下降后得到的结果theta0和theta1相近。增加实验次数(如修改epsilon的次数)可以得到更为相近的结果。

运行完毕后发现其实该处理方式并不理想
因为梯度下降开始后,theta数量会增加,即变量也会增加。每次增加都需要重新编写其中的循环和函数。
因此可以将他们编写成向量的形式

import numpy as np
#X_b = np.array([[1,4],[1,8],[1,5],[1,10],[1,12]])
#y = np.array([20,50,30,70,60])
#改写成向量形式
#运用random随机生成100个样本


np.random.seed(1)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.rand(100, 1)
X_b = np.c_[np.ones((100, 1)), X]
#print(X_b)
#此处的learning_rate 就是alpha
learning_rate = 0.01
#设置最大迭代次数,避免学习时间过长
n_iterations = 10000
#样本格数
m = 100
#初始化thata, w0...wn,初始化两个2fESTs*1 的随机数
theta = np.random.randn(2, 1)

#不会设置阈值,直接设置超参数,迭代次数,迭代次数到了,我们就认为收敛了。先看结果,如果结果不好就去调参
for _ in range(n_iterations):
    #接着求梯度gradient,这儿的梯度是n个梯度。即x* (h_theta - y)
    #会得到一次迭代的n个theta值
    gradients = 1/m * X_b.T.dot(X_b.dot(theta)-y)
    #应用公式调整theta的值,theta_t + 1 = theta_t - grad * learning_rate , 是一个向量
    theta = theta - learning_rate * gradients
print(theta)

到此这篇关于python简单批量梯度下降代码的文章就介绍到这了,更多相关Python梯度下降内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

--结束END--

本文标题: python简单批量梯度下降代码

本文链接: https://www.lsjlt.com/news/21543.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python简单批量梯度下降代码怎么写
    python简单批量梯度下降代码怎么写,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。简单批量梯度下降代码其中涉及到公式alpha表示超参数,由外部设定。过大则会出现震荡现象,过...
    99+
    2023-06-26
  • 使用Python实现小批量梯度下降算法的代码逻辑
    让theta=模型参数和max_iters=时期数。对于itr=1,2,3,...,max_iters:对于mini_batch(X_mini,y_mini): 批量X_mini的前向传递: 1、对小批量进行预测 2、使用参数的当...
    99+
    2024-01-22
    算法的概念
  • Python实现批量梯度下降法(BGD)拟合曲线
    1. 导入库 import numpy as np #矩阵运算 import matplotlib.pyplot as plt #可视化 import random #产生数据扰...
    99+
    2024-04-02
  • Python实现梯度下降法的示例代码
    目录1.首先读取数据集2.初始化相关参数3.定义计算代价函数–>MSE4.梯度下降5.执行1.首先读取数据集 导包并读取数据,数据自行任意准备,只要有两列,可以分为...
    99+
    2024-04-02
  • python实现梯度下降求解逻辑回归
    本文实例为大家分享了python实现梯度下降求解逻辑回归的具体代码,供大家参考,具体内容如下 对比线性回归理解逻辑回归,主要包含回归函数,似然函数,梯度下降求解及代码实现 线性回归 ...
    99+
    2024-04-02
  • 使用Python在实现一个梯度下降算法
    这期内容当中小编将会给大家带来有关使用Python在实现一个梯度下降算法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3...
    99+
    2023-06-06
  • python如何实现梯度下降求解逻辑回归
    线性回归1.线性回归函数似然函数的定义:给定联合样本值X下关于(未知)参数 的函数似然函数:什么样的参数跟我们的数据组合后恰好是真实值 2.线性回归似然函数对数似然: 3.线性回归目标函数(误差的表达式,我们的目的就是使得真实值与预...
    99+
    2023-05-14
    Python
  • python怎么实现梯度下降求解逻辑回归
    今天小编给大家分享一下python怎么实现梯度下降求解逻辑回归的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。线性回归1.线性...
    99+
    2023-07-06
  • Python实现多元线性回归的梯度下降法
    目录1. 读取数据2.定义代价函数3. 梯度下降4.可视化展示1. 读取数据 首先要做的就是读取数据,请自行准备一组适合做多元回归的数据即可。这里以data.csv为例,这里做的是二...
    99+
    2024-04-02
  • Python机器学习之随机梯度下降法的实现
    目录随机梯度下降法随机梯度下降法的实现随机梯度下降法 为什么使用随机梯度下降法? 如果当我们数据量和样本量非常大时,每一项都要参与到梯度下降,那么它的计算量时非常大的,所以我们可以采...
    99+
    2023-02-27
    Python随机梯度下降法 Python梯度下降法 Python梯度下降
  • python机器学习逻辑回归随机梯度下降法
    目录写在前面随机梯度下降法参考文献写在前面 随机梯度下降法就在随机梯度上。意思就是说当我们在初始点时想找到下一点的梯度,这个点是随机的。全批量梯度下降是从一个点接着一点是有顺序的,全...
    99+
    2024-04-02
  • python中逻辑回归随机梯度下降法怎么用
    这篇文章主要为大家展示了“python中逻辑回归随机梯度下降法怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python中逻辑回归随机梯度下降法怎么用”这篇文章吧。随机梯度下降法随机梯度下...
    99+
    2023-06-25
  • 图文详解梯度下降算法的原理及Python实现
    目录1.引例2.数值解法3.梯度下降算法4.代码实战:Logistic回归1.引例 给定如图所示的某个函数,如何通过计算机算法编程求f(x)min? 2.数值解法 传统方法是数值解...
    99+
    2024-04-02
  • Python机器学习之随机梯度下降法如何实现
    本文小编为大家详细介绍“Python机器学习之随机梯度下降法如何实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python机器学习之随机梯度下降法如何实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。随机梯...
    99+
    2023-07-05
  • 深入探究Python底层技术:如何实现梯度下降算法
    深入探究Python底层技术:如何实现梯度下降算法,需要具体代码示例引言:梯度下降算法是一种常用的优化算法,广泛应用于机器学习和深度学习领域。本文将深入探究Python底层技术,详细介绍了梯度下降算法的原理和实现过程,并提供具体的代码示例。...
    99+
    2023-11-08
    Python 底层技术 梯度下降算法
  • python简单小游戏代码10行,python超简单小游戏代码
    大家好,小编为大家解答python编写的入门简单小游戏代码大全的问题。很多人还不知道python编写的入门简单小游戏代码,现在让我们一起来看看吧! 1、小恐龙 玩法:上下控制起跳躲避 import cfgimport sysi...
    99+
    2023-10-24
    pygame python 开发语言 人工智能
  • python的一些简单的程序代码,python的简单程序代码
    大家好,给大家分享一下python的一些简单的程序代码,很多人还不知道这一点。下面详细解释一下。现在让我们来看看!   Python 100个简单小例子(持续更新中) 1 编写一个计算平年还是闰年的小例子其核心是年份可以整除4和...
    99+
    2023-10-10
    python
  • Python批量爬虫下载PDF文件代码实现
    本文的背景是:大学关系很好的老师问我能不能把Excel中1000个超链接网址对应的pdf文档下载下来。虽然可以手动一个一个点击下载,但是这样太费人力和时间了。我想起了之前的爬虫经验,给老师分析了一下可...
    99+
    2023-09-27
    python 爬虫 pdf
  • python爱心代码简单教程
    python爱心代码简单教程操作方法 1 将以上代码保存为.py文件,假设保存的文件名为 love.py (不会保存?先保存为txt文本,然后将后缀改为.py) 2 在终端(cmd命令窗口)输入python 空格 love.py的路径 回...
    99+
    2023-09-25
    python 开发语言
  • 怎么用Python代码批量抠图
    这篇文章主要讲解了“怎么用Python代码批量抠图”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Python代码批量抠图”吧!1.准备为了实现这个实验,Python是必不可少的,如果你...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作