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

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

原文链接: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
  • 12
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值