写一个基于pytorch的回归预测,特征数四个和标签数五十个都存在data.csv中,显示损失变化
时间: 2023-02-11 09:24:54 浏览: 120
首先,需要导入所需的库,包括PyTorch中的torch和torch.nn,用于模型定义和训练,还有pandas,用于读取csv文件中的数据。
```python
import torch
import torch.nn as nn
import pandas as pd
```
然后,使用pandas读取csv文件中的数据,并将数据分为训练数据和测试数据。
```python
data = pd.read_csv("data.csv")
X = data.iloc[:, :4]
y = data.iloc[:, 4:]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
```
接下来,定义回归模型,在这里使用线性回归模型。
```python
class LinearRegression(nn.Module):
def __init__(self):
super().__init__()
self.linear = nn.Linear(4, 50)
def forward(self, x):
return self.linear(x)
model = LinearRegression()
```
定义损失函数和优化器,在这里使用均方误差作为损失函数,随机梯度下降作为优化器。
```python
criterion = nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
```
训练模型,并在每个epoch结束时输出当前损失。
```python
for epoch in range(1000):
# 将训练数据转换为张量
inputs = torch.from_numpy(X_train.values).float()
targets = torch.from_numpy(y_train.values).float()
# 前向传播
outputs = model(inputs)
loss = criterion(outputs, targets)
# 清空上一步梯度
optimizer.zero_grad()
# 反向传播
loss.backward()
# 更新参数
阅读全文