手动实现线性回归模型

  1. 1. 导入依赖包
  2. 2. 加载数据并预处理
  3. 3. 初始化权重和偏置
  4. 4. 定义学习率
  5. 5. 反向传播更新参数
  6. 6.绘制原始数据和预测数据

1. 导入依赖包

import torch
from torch import nn
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

2. 加载数据并预处理

data = pd.read_csv('./data/Income.csv')
X = torch.from_numpy(data.Education.values.reshape(-1, 1).astype(np.float32))
Y = torch.from_numpy(data.Income.values.reshape(-1, 1).astype(np.float32))

3. 初始化权重和偏置

w = torch.randn(1, requires_grad=True)
b = torch.zeros(1, requires_grad=True)

4. 定义学习率

learning_rate = 0.0001

5. 反向传播更新参数

for epoch in range(10000):
    for x, y in zip(X, Y):
        y_pred = torch.matmul(x, w) + b
        loss = (y - y_pred).pow(2).mean()
        if not w.grad is None:
            w.grad.data.zero_()
        if not b.grad is None:
            b.grad.data.zero_()
        loss.backward()
        with torch.no_grad():
            w.data -= w.grad.data * learning_rate
            b.data -= b.grad.data * learning_rate

6.绘制原始数据和预测数据

plt.scatter(data.Education, data.Income)
plt.plot(X.numpy(), (X*w + b).data.numpy(), c='r')

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 2621041184@qq.com