1.数据集
用于回归预测的数据集为波士顿房价预测问题的数据集,它是回归问题的一个经典数据集。数据集中,有13个影响房价的因素,因此每个样本维度为13。数据集一共包含506个样本,因此数据集的数据样本维度为(506,13),数据集的目标维度为(506,1)。
调用sklearn库可以方便的下载该数据集。
from sklearn.datasets import load_boston
dataset=load_boston()
x_data=dataset.data
y_data=dataset.target
n_data=dataset.feature_names
其中,x_data维度为(506,13),y_data维度为(506,1),n_data维度为(1,13)。
2.数据预处理
将506个样本数据分成训练集、验证集和测试集三部分。
训练前对数据进行预处理,先将数据进行标准化,再将数据由原始的numpy格式转化为tensor.cuda格式,以便在GPU上训练和测试。
def normalize(x_data, mean, deviation):
std = (x_data - mean) / deviation
return std
#1.Load the train datasets and test datasets
dataset=load_boston()
mean = dataset.data.mean()
deviation = dataset.data.std()
train_target=dataset.target[:416]
train_target=torch.from_numpy(train_target)
train_data=dataset.data[:416]
train_data=normalize(train_data, mean, deviation)
train_data=torch.from_numpy(train_data)
train_dataset = TensorDataset(train_data, train_target)
train_loader = DataLoader(train_dataset,batch_size=32,shuffle=True,num_workers=4)
test_target=dataset.target[416:480]
test_target = torch.from_numpy(test_target)
test_data=dataset.data[416:480]
test_data=normalize(test_data, mean, deviation)
test_data=torch.from_numpy(test_data)
test_dataset = TensorDataset(test_data, test_target)
test_loader = DataLoader(test_dataset,batch_size=32,shuffle=False,num_workers=0)
3.模型初始化
#2.Initialize model
cuda_avail = torch.cuda.is_available()
model = SimpleNet()
if cuda_avail:
model.cuda()
4.定义优化器和损失函数
#3. Define the optimizer and loss function
optimizer = Adam(model.parameters(