【附Python源码】基于MLP的波士顿房价预测
【附Python源码】基于MLP的波士顿房价预测房价预测作为机器学习领域的经典入门问题其价值不仅在于算法本身更在于完整建模流程的掌握。本项目将基于Boston Housing数据集详细介绍如何使用PyTorch构建一个多层神经网络回归模型涵盖数据预处理、特征工程、模型设计、训练优化及可视化分析等关键环节。数据集概述Boston Housing数据集包含506条波士顿郊区的房屋记录每条记录有13个特征属性和1个目标变量房价中位数。这些特征涵盖了影响房价的各类因素地理位置类纬度LAT、经度LON、到就业中心距离DIS房屋属性类房间数RM、房龄AGE、住宅用地比例ZN社会环境类”饭最率“CRIM、师生比例PTRATIO、低收入人群比例LSTAT基础设施类公路可达性RAD、财产税率TAX、一氧化氮浓度NOX目标变量MEDV表示该区域自住房屋的中位数价值单位为千美元。该数据集的特点在于特征维度适中、样本量较小适合作为回归问题的基准测试。数据预处理流程缺失值处理原始数据中存在部分缺失值主要集中在几个特征列。考虑到房价数据的分布特性采用中位数填充策略dfdf.fillna(df.median(numeric_onlyTrue))中位数填充的优势在于对异常值不敏感能够保持数据的整体分布特征避免均值填充可能带来的偏差。特征标准化神经网络对输入特征的尺度较为敏感因此需要进行标准化处理。采用StandardScaler对特征进行Z-score标准化scalerStandardScaler()X_trainscaler.fit_transform(X_train)X_testscaler.transform(X_test)标准化的核心思想是将特征转换为均值为0、标准差为1的分布这有助于加速梯度下降的收敛过程同时避免某些大尺度特征主导模型训练。数据加载器构建PyTorch的DataLoader提供了高效的数据迭代机制。设置batch_size为256在训练时启用shuffle以打乱数据顺序测试时则保持顺序一致train_loaderDataLoader(train_dataset,batch_size256,shuffleTrue)test_loaderDataLoader(test_dataset,batch_size256,shuffleFalse)探索性数据分析在模型训练之前对数据进行可视化分析有助于理解特征分布及相互关系。特征分布直方图通过绘制各特征的分布直方图可以直观了解数据的偏态、峰度及异常值情况。例如犯罪率CRIM呈现明显的左偏分布大部分区域的犯罪率较低少数区域 crime rate 较高而房间数RM则近似正态分布集中在6-7个房间。相关性热力图计算特征间的Pearson相关系数并绘制热力图可识别与目标变量强相关的特征。模型架构设计网络结构设计针对该回归问题设计了一个四层全连接网络输入层(13) → 隐藏层1(128) → 隐藏层2(64) → 隐藏层3(32) → 输出层(1)网络深度和宽度的选择基于以下考量输入维度为13第一层扩展至128维以提取丰富的特征表示后续层逐级降维形成特征金字塔结构最终输出层为单节点直接输出预测值正则化策略为防止过拟合在网络中引入了两类正则化技术Batch Normalization在每个隐藏层后添加批归一化通过对每层输入进行标准化缓解内部协变量偏移问题加速收敛并允许使用更大的学习率。Dropout以0.2的概率随机丢弃神经元强制网络学习冗余表示增强泛化能力。激活函数选择隐藏层采用ReLU激活函数其优势在于计算简单梯度不会饱和引入非线性增强模型表达能力稀疏激活特性降低计算开销输出层不使用激活函数直接输出实数值符合回归任务的需求。训练策略与优化损失函数选用均方误差MSE作为损失函数criterionnn.MSELoss()MSE对大误差赋予更高惩罚适合房价预测这类需要控制预测偏差的场景。优化器配置采用Adam优化器结合其自适应学习率特性optimizeroptim.Adam(model.parameters(),lr0.001,weight_decay1e-5)weight_decay参数引入L2正则化进一步抑制过拟合。学习率调度引入ReduceLROnPlateau调度器当验证损失连续10个epoch未下降时学习率减半scheduleroptim.lr_scheduler.ReduceLROnPlateau(optimizer,modemin,factor0.5,patience10)这种自适应调整策略有助于模型在训练后期精细优化。早停机制设置早停耐心值为30若验证损失连续30个epoch未改善则终止训练并恢复最佳模型权重ifavg_val_lossbest_loss:best_lossavg_val_loss patience_counter0torch.save(model.state_dict(),MODEL_SAVE_PATH)早停机制有效防止过拟合同时节省计算资源。模型评估与可视化评估指标采用以下指标全面评估模型性能MSE均方误差反映预测值与真实值的平均平方偏差RMSE均方根误差与目标变量同量纲便于解释MAE平均绝对误差对异常值更鲁棒R²分数衡量模型解释数据变异的能力越接近1表示拟合越好预测结果可视化真实值vs预测值散点图理想情况下点应分布在对角线附近。图中添加R²分数标注直观展示模型拟合程度。残差分析图包含残差分布直方图和残差vs预测值散点图。若模型假设成立残差应近似服从均值为0的正态分布且与预测值无明显相关性。关键技术点总结数据预处理的重要性缺失值填充和特征标准化是神经网络训练的基础直接影响模型收敛速度和最终性能。网络设计的平衡过浅的网络难以捕捉复杂模式过深则容易过拟合。本项目的四层结构在表达能力和泛化性能间取得平衡。正则化的必要性BatchNorm和Dropout的组合使用显著提升了模型在测试集上的表现是防止过拟合的有效手段。训练策略的精细化学习率调度和早停机制的加入使训练过程更加智能避免了人工调参的主观性。可视化的价值通过多种图表分析数据和模型行为能够快速定位问题并指导优化方向。当前模型可作为基线进一步改进的方向包括特征工程引入特征交叉如RM×LSTAT、多项式特征捕捉非线性关系集成学习训练多个模型并取平均降低预测方差超参数优化采用网格搜索或贝叶斯优化寻找最优超参数组合更复杂的网络结构尝试残差连接ResNet或注意力机制⚠️完整代码已开源欢迎交流探讨。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2568023.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!