iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python实现梯度下降法的示例代码
  • 200
分享到

Python实现梯度下降法的示例代码

2024-04-02 19:04:59 200人浏览 泡泡鱼

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

摘要

目录1.首先读取数据集2.初始化相关参数3.定义计算代价函数–>MSE4.梯度下降5.执行1.首先读取数据集 导包并读取数据,数据自行任意准备,只要有两列,可以分为

1.首先读取数据集

导包并读取数据,数据自行任意准备,只要有两列,可以分为自变量x和因变量y即可即可。

import numpy as np
import matplotlib.pyplot as plt

data = np.loadtxt("data.csv", delimiter=",")

x_data = data[:, 0]
y_data = data[:, 1]

2.初始化相关参数

# 初始化 学习率 即每次梯度下降时的步长 这里设置为0.0001
learning_rate = 0.0001

# 初始化 截距b 与 斜率k
b = 0
k = 0

# 初始化最大迭代的次数 以50次为例
n_iterables = 50

3.定义计算代价函数–>MSE

使用均方误差 MSE (Mean Square Error)来作为性能度量标准

假设共有m个样本数据,则均方误差:

将该公式定义为代价函数,此外为例后续求导方便,则使结果在原mse的基础上,再乘以1/2。

def compute_mse(b,  k,  x_data, y_data):
    total_error = 0
    for i in range(len(x_data)):
        total_error += (y_data[i] - (k * x_data[i] + b)) ** 2

    # 为方便求导:乘以1/2
    mse_ = total_error / len(x_data) / 2
    return mse_

4.梯度下降

分别对上述的MSE表达式(乘以1/2后)中的k,b求偏导,

更新b和k时,使用原来的b,k值分别减去关于b、k的偏导数与学习率的乘积即可。至于为什么使用减号,可以这么理解:以斜率k为例,当其导数大于零的时候,则表示均方误差随着斜率的增大而增大,为了使均方误差减小,则不应该使斜率继续增大,所以需要使其减小,反之当偏导大于零的时候也是同理。其次,因为这个导数衡量的是均方误差的变化,而不是斜率和截距的变化,所以这里需要引入一个学习率,使得其与偏导数的乘积能够在一定程度上起到控制截距和斜率变化的作用。

def gradient_descent(x_data, y_data, b,  k,  learning_rate,  n_iterables):
    m = len(x_data)
    # 迭代
    for i in range(n_iterables):
        # 初始化b、k的偏导
        b_grad = 0
        k_grad = 0

        # 遍历m次
        for j in range(m):
            # 对b,k求偏导
            b_grad += (1 / m) * ((k * x_data[j] + b) - y_data[j])
            k_grad += (1 / m) * ((k * x_data[j] + b) - y_data[j]) * x_data[j]

        # 更新 b 和 k  减去偏导乘以学习率
        b = b - (learning_rate * b_grad)
        k = k - (learning_rate * k_grad)
        # 每迭代 5 次  输出一次图形
        if i % 5 == 0:
            print(f"当前第{i}次迭代")
            print("b_gard:", b_grad, "k_gard:", k_grad)
            print("b:", b, "k:", k)
            plt.scatter(x_data, y_data, color="maroon", marker="x")
            plt.plot(x_data, k * x_data + b)
            plt.show()
    return b, k

5.执行

print(f"开始:截距b={b},斜率k={k},损失={compute_mse(b,k,x_data,y_data)}")
print("开始迭代")
b, k = gradient_descent(x_data, y_data, b, k, learning_rate, n_iterables)
print(f"迭代{n_iterables}次后:截距b={b},斜率k={k},损失={compute_mse(b,k,x_data,y_data)}")

代码执行过程产生了一系列的图像,部分图像如下图所示,随着迭代次数的增加,代价函数越来越小,最终达到预期效果,如下图所示:

第5次迭代:

第10次迭代:

第50次迭代:

执行过程的输出结果如下图所示:

可以看到,随着偏导数越来越小,斜率与截距的变化也越来越细微。

到此这篇关于python实现梯度下降法的示例代码的文章就介绍到这了,更多相关Python梯度下降法内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python实现梯度下降法的示例代码

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

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

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

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

下载Word文档
猜你喜欢
  • Python实现梯度下降法的示例代码
    目录1.首先读取数据集2.初始化相关参数3.定义计算代价函数–>MSE4.梯度下降5.执行1.首先读取数据集 导包并读取数据,数据自行任意准备,只要有两列,可以分为...
    99+
    2024-04-02
  • 使用Python实现小批量梯度下降算法的代码逻辑
    让theta=模型参数和max_iters=时期数。对于itr=1,2,3,...,max_iters:对于mini_batch(X_mini,y_mini): 批量X_mini的前向传递: 1、对小批量进行预测 2、使用参数的当...
    99+
    2024-01-22
    算法的概念
  • Pytorch梯度下降优化的示例分析
    这篇文章主要介绍了Pytorch梯度下降优化的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、激活函数1.Sigmoid函数函数图像以及表达式如下:通过该函数,可以...
    99+
    2023-06-25
  • 使用Python在实现一个梯度下降算法
    这期内容当中小编将会给大家带来有关使用Python在实现一个梯度下降算法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3...
    99+
    2023-06-06
  • Python实现多元线性回归的梯度下降法
    目录1. 读取数据2.定义代价函数3. 梯度下降4.可视化展示1. 读取数据 首先要做的就是读取数据,请自行准备一组适合做多元回归的数据即可。这里以data.csv为例,这里做的是二...
    99+
    2024-04-02
  • python简单批量梯度下降代码怎么写
    python简单批量梯度下降代码怎么写,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。简单批量梯度下降代码其中涉及到公式alpha表示超参数,由外部设定。过大则会出现震荡现象,过...
    99+
    2023-06-26
  • Python机器学习之随机梯度下降法的实现
    目录随机梯度下降法随机梯度下降法的实现随机梯度下降法 为什么使用随机梯度下降法? 如果当我们数据量和样本量非常大时,每一项都要参与到梯度下降,那么它的计算量时非常大的,所以我们可以采...
    99+
    2023-02-27
    Python随机梯度下降法 Python梯度下降法 Python梯度下降
  • Python实现批量梯度下降法(BGD)拟合曲线
    1. 导入库 import numpy as np #矩阵运算 import matplotlib.pyplot as plt #可视化 import random #产生数据扰...
    99+
    2024-04-02
  • 图文详解梯度下降算法的原理及Python实现
    目录1.引例2.数值解法3.梯度下降算法4.代码实战:Logistic回归1.引例 给定如图所示的某个函数,如何通过计算机算法编程求f(x)min? 2.数值解法 传统方法是数值解...
    99+
    2024-04-02
  • python实现梯度下降求解逻辑回归
    本文实例为大家分享了python实现梯度下降求解逻辑回归的具体代码,供大家参考,具体内容如下 对比线性回归理解逻辑回归,主要包含回归函数,似然函数,梯度下降求解及代码实现 线性回归 ...
    99+
    2024-04-02
  • Python实现12种降维算法的示例代码
    目录为什么要进行数据降维数据降维原理主成分分析(PCA)降维算法其它降维算法及代码地址1.KPCA(kernel PCA)2.LDA(Linear Discriminant Anal...
    99+
    2024-04-02
  • Python机器学习之随机梯度下降法如何实现
    本文小编为大家详细介绍“Python机器学习之随机梯度下降法如何实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python机器学习之随机梯度下降法如何实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。随机梯...
    99+
    2023-07-05
  • python如何实现梯度下降求解逻辑回归
    线性回归1.线性回归函数似然函数的定义:给定联合样本值X下关于(未知)参数 的函数似然函数:什么样的参数跟我们的数据组合后恰好是真实值 2.线性回归似然函数对数似然: 3.线性回归目标函数(误差的表达式,我们的目的就是使得真实值与预...
    99+
    2023-05-14
    Python
  • PyTorch梯度下降反向传播实例分析
    本文小编为大家详细介绍“PyTorch梯度下降反向传播实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“PyTorch梯度下降反向传播实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。前言:反向传播的目...
    99+
    2023-06-29
  • python怎么实现梯度下降求解逻辑回归
    今天小编给大家分享一下python怎么实现梯度下降求解逻辑回归的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。线性回归1.线性...
    99+
    2023-07-06
  • 深入探究Python底层技术:如何实现梯度下降算法
    深入探究Python底层技术:如何实现梯度下降算法,需要具体代码示例引言:梯度下降算法是一种常用的优化算法,广泛应用于机器学习和深度学习领域。本文将深入探究Python底层技术,详细介绍了梯度下降算法的原理和实现过程,并提供具体的代码示例。...
    99+
    2023-11-08
    Python 底层技术 梯度下降算法
  • 人工智能学习Pytorch梯度下降优化示例详解
    目录一、激活函数1.Sigmoid函数2.Tanh函数3.ReLU函数二、损失函数及求导1.autograd.grad2.loss.backward()3.softmax及其求导三、...
    99+
    2024-04-02
  • Python+OpenCV实现角度测量的示例代码
    本文介绍如何使用python语言实现角度测量,程序包括鼠标选点、直线斜率计算、角度计算三个子程序和一个主程序。最终实现效果:在图片上用鼠标确认三点,程序将会显示由此三点确定的角度,如...
    99+
    2024-04-02
  • python机器学习逻辑回归随机梯度下降法
    目录写在前面随机梯度下降法参考文献写在前面 随机梯度下降法就在随机梯度上。意思就是说当我们在初始点时想找到下一点的梯度,这个点是随机的。全批量梯度下降是从一个点接着一点是有顺序的,全...
    99+
    2024-04-02
  • python中逻辑回归随机梯度下降法怎么用
    这篇文章主要为大家展示了“python中逻辑回归随机梯度下降法怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python中逻辑回归随机梯度下降法怎么用”这篇文章吧。随机梯度下降法随机梯度下...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作