基于pytorch的简单回归问题之波士顿房价预测
时间: 2024-09-28 17:08:55 浏览: 73
基于PyTorch的波士顿房价预测是一个经典的应用实例,通常用于入门深度学习和强化理解神经网络的基本概念。在这个案例中,我们会使用Python的PyTorch库,结合Boston Housing数据集来进行线性和非线性模型的训练。以下是简要步骤:
1. **导入库**:
首先,你需要导入必要的库,如`torch`, `numpy`, `pandas` 和 `sklearn`,以及数据处理模块。
```python
import torch
import numpy as np
import pandas as pd
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
```
2. **加载和预处理数据**:
使用`load_boston()`函数加载数据,然后将其分为特征(X)和目标变量(y)。对数据进行标准化,以便更好地适应神经网络。
```python
boston = load_boston()
X = boston.data
y = boston.target
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
```
3. **拆分数据集**:
划分训练集和测试集,通常比例为70%训练,30%测试。
```python
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.3, random_state=42)
```
4. **创建神经网络模型**:
PyTorch提供`nn.Module`类作为基础,可以自定义线性回归模型或添加更多的层(如隐藏层)构建更复杂的模型。
```python
class LinearRegressionModel(torch.nn.Module):
def __init__(self, input_dim, output_dim):
super(LinearRegressionModel, self).__init__()
self.linear = torch.nn.Linear(input_dim, output_dim)
def forward(self, x):
return self.linear(x)
```
5. **模型训练**:
定义损失函数(如均方误差MSE),优化器(如Adam),然后通过`fit()`函数进行训练。
```python
model = LinearRegressionModel(X_train.shape[1], 1) # 线性回归只有一个输出
criterion = torch.nn.MSELoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
num_epochs = 100
for epoch in range(num_epochs):
optimizer.zero_grad()
predictions = model(X_train)
loss = criterion(predictions, y_train.reshape(-1, 1)) # 把y转为列向量
loss.backward()
optimizer.step()
```
6. **评估模型**:
测试阶段,计算并打印测试集上的性能指标。
```python
with torch.no_grad():
y_pred = model(X_test)
mse = criterion(y_pred, y_test.reshape(-1, 1))
print(f"Mean Squared Error on Test Set: {mse.item()}")
```
阅读全文