当前位置: 首页 > news >正文

手动用梯度下降法和随机梯度下降法实现一元线性回归

手动用梯度下降法实现一元线性回归

原文链接:https://www.cnblogs.com/qimoxuan/p/18407823

实验目的

本次实验旨在通过手动实现梯度下降法和随机梯度下降法来解决一元线性回归问题。具体目标包括:

  1. 生成训练数据集,并使用matplotlib进行可视化。
  2. 设计一个`LinearModel`类来实现一元线性回归的批量梯度下降法。
  3. 使用matplotlib显示拟合结果。
  4.  修改`LinearModel`类来实现随机梯度下降法,并重复上述实验步骤。

实验环境

Python版本:3.x
库:NumPy, Matplotlib

实验步骤

步骤1:准备数据

  1. 生成100个训练样本,其中自变量X取值服从均值为0,方差为1的正态分布。
  2. 设定因变量Y的关系式为Y = 4X + 3 + e_{r},其中e_{r}为误差项,取值服从均值为0,方差为1的正态分布。
  3. 使用Matplotlib绘制生成的数据点。
import numpy as np
import matplotlib.pyplot as plt# 设置随机种子以保证结果可复现
np.random.seed(0)# 生成100个训练样本
X = np.random.normal(loc=0, scale=1, size=100)  # X服从N(0,1)
e_r = np.random.normal(loc=0, scale=1, size=100)  # 误差项e_r服从N(0,1)
Y = 4 * X + 3 + e_r  # Y = 4*X + 3 + e_r# 使用matplotlib显示生成的数据
plt.figure(figsize=(8, 6))
plt.scatter(X, Y, color='blue', label='Actual Data')
plt.title('Generated Data for Linear Regression')
plt.xlabel('X')
plt.ylabel('Y')
plt.legend()
plt.grid(True)
plt.show()

步骤2:定义LinearModel类

  1. 定义一个`LinearModel`类,包含模型初始化、前向传播、损失计算、梯度计算和参数更新等方法。
  2. 在类中实现批量梯度下降法的训练逻辑,通过设置最大迭代次数或验证集错误率来停止迭代。
class LinearModel:def __init__(self):self.w = n

http://www.mrgr.cn/news/24226.html

相关文章:

  • Windows安装Redis环境
  • LeetCode题练习与总结:矩形面积--223
  • Docker常用操作(基础篇)
  • Nestjs仿小米商城企业级Nodejs RBAC 微服务项目实战视频教程+Docker Swarm K8s云原生分布式部署教程分享
  • Docker部署Doris数据库
  • docker的相关网络问题
  • 关于大模型在产品开发中所面临的问题,利用大模型技术解决很简单!
  • 【编程入门】与7无关的数?
  • 潘多拉的盒子还是阿拉丁的神灯:揭示RAG噪声在大语言模型中的作用
  • 百元榜哪个牌子的蓝牙耳机最好用?四大闭眼入高性价比耳机推荐!
  • 《OpenCV计算机视觉》—— 通过旋转模板图像匹配多个目标区域
  • Windows 急救系列
  • shader 案例学习笔记之smoothstep函数
  • 9代现场实拍图
  • Fiddler
  • Elasticsearch7.x 集群迁移文档
  • 浅谈proc目录
  • 带你0到1之QT编程:九、布局Layouts两大手段搞定常用开发
  • 线路及接口基础知识
  • 滚雪球学MyBatis(09):MyBatis与Spring整合