动手学深度学习房价预测练习
kaggle竞赛网址 kaggle california house prices
- device: 使用
cpu
还是gpu
训练 - batch_size: mini-batch大小
- optimizer:优化算法使用
Adam
- optim_hparams: 优化算法超参数
- learning_rate: 学习率
- weight_decay: 权重衰退
- num_workers:
Dataloader
线程数 - drop_last: 是否丢弃不够mini-batch大小的数据
- dropout: 丢弃比例
- n_epochs: epoch总数
- n_early_stop: loss不下降时等多少个epoch停止训练
- n_k_fold: k折交叉验证个数
- k: k折交叉验证当前第几个
数据处理分三个部分: 数据预处理/k折交叉取数据/数据加载
数据预处理
- 将
object
的数据去除掉 - 对数据进行均值为0,方差为1的标准化
- 将
nan
数据替换为0 - 将数据分为
train_set/train_labels/test_set/test_id
test_id
主要用于test时填充test_id列
k折交叉取数据
- 将
train_set/train_labels
分成k份 - 取其中一份作为
valid_set/valid_labels
,其余部分作为真正的train_set/train_labels
数据加载
- 使用
CHP_Dataset
和DataLoader
加载mini-batch大小的数据
- 定义单隐藏层
MLP
- 定义损失函数为
MSELoss
- 定义
log_rmse
函数,为了与kaggle结果评估方式一致
k折交叉验证训练,最终得到k个模型
选择k个模型中损失最小的模型进行推理