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