线性回归

  1. 1. 导入依赖包
  2. 2. 导入数据并查看数据

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')

查看数据整体情况

data.info()

查看数据的前5行

data.head()

绘制数据的散点图,受教育年限为x轴,收入为y轴

plt.scatter(data.Education, data.Income)
plt.xlabel('Education')
plt.ylabel('Income')
plt.show()

将受教育年限和收入转化为tensor

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))

定义一个 y = wx + b模型

model = nn.Linear(1, 1)

定义损失函数

loss_fn = nn.MSELoss()

定义优化器

opt = torch.optim.SGD(model.parameters(), lr=0.0001)

将模型训练10000个epoch,每一轮输入x对其进行预测,然后计算其与真实值之间的损失,将变量的梯度清零再求解变量的提高,最后更新模型参数

for epoch in range(10000):
    for x, y in zip(X, Y):
        y_pred = model(x)
        loss = loss_fn(y, y_pred)
        opt.zero_grad()
        loss.backward()
        opt.step()

查看模型权重

model.weight

查看模型偏置

model.bias

绘制原始数据和预测数据

plt.scatter(data.Education, data.Income)
plt.plot(X.numpy(), model(X).data.numpy(), c='r')

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