#f(x)=w*x+b x代表学历 f(x)代表收入
#找到合适的w和b,使得(f(x)-y)^2越小越好 即求解参数w和b
import torch
import torch.nn as nn
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#打开文件
data=pd.read_csv(r'D:/pycharmworkspace/ISLR-master/Income1.csv')
plt.scatter(data.Education,data.Income)
plt.xlabel('Education')
plt.ylabel('Income')
#数据预处理
#values将数据以列表形式返回 reshape(-1,1)-1代表未指定 1代表指定1列 astype将数据类型转换成统一的float32类型
# torch.from_numpy将numpy数据转换成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))
#创建模型
#output = w*input + b nn.Linear会随机初始化w和b 1个输入 1个输出
model = nn.Linear(1,1)
#损失函数:均方误差即预测值和真实值之间差的平方取均值
loss_fn = nn.MSELoss()
#优化:随机梯度下降算法 torch里的optim中有SGD优化算法
#model.parameters()是要优化model里的w和b参数 lr=0.0001是学习速率
opt = torch.optim.SGD(model.parameters(),lr=0.0001)
#对全部数据训练5000次
for epoch in rang
基于pytorch的线性回归预测
最新推荐文章于 2024-05-30 23:02:10 发布