1.作者介绍王浩宇男西安工程大学电子信息学院2025级研究生研究方向古建筑数字化保护电子邮件why1904791793163.com2 . MLP 神经网络的红酒品质回归预测(PyTorch-free 的 sklearn 全流程实现知识介绍2.1 多层感知机MLPMLP 是前馈神经网络由输入层、隐藏层、输出层组成层间全连接且通过非线性激活函数引入非线性表达能力其中ReLU 激活函数Wl为权重、bl 偏置2.2 回归评估指标平均绝对误差MAE又称L1范数损失即误差绝对值的平均值。MAE可以准确反映实际预测误差的大小。MAE用于评价真实值与拟合值的偏离程度MAE值越接近于0说明模型拟合越好模型预测准确率越高但是RMSE值还是使用最多的。MAE计算公式均方误差MSE又称L2范数损失即误差平方和的平均值MSE是衡量模型预测误差的一种常用指标。MSE值越接近于0说明模型拟合越好。MSE计算公式均方误差根RMSE是均方误差MSE的算术平方根回归模型中最常用的评价模型指标。相比于均方误差MSE均方误差根RMSE更常用。RMSE值越接近0说明模型拟合越好。RMSE值计算公式R方值是衡量回归模型拟合优度的统计量它表示回归模型对观测值的拟合程度代表了模型中因变量可由自变量解释的百分比。R方值的取值范围在0到1之间R方值越大说明回归模型对观测值的拟合程度越好。比如R方为0.5说明所有自变量可以解释因变量50%的变化原因。R方计算公式如下2.3 数据标准化神经网络对输入尺度敏感采用两阶段标准化特征标准化StandardScaler将11个特征转为零均值、单位方差目标值标准化TransformedTargetRegressor包裹 MLP自动标准化 quality并在预测时还原提升训练稳定性。实验设计与实现3.1 数据集准备3.1.1 数据来源UCI Machine Learning Repository下载地址https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv3.1.2 数据集概览3.1.3 特征说明3.1.4 数据预处理自动兼容分号/逗号分隔的 CSV 格式固定随机种子划分训练/测试集特征目标值双标准化。3.2 模型架构与超参数3.2.1 模型结构3.2.2 核心超参数3.2.3 Pipeline 管道Pipeline([(“feature_scaler”, StandardScaler()), # 特征标准化(“model”, TransformedTargetRegressor( # 目标值标准化MLPregressorMLPRegressor(…),transformerStandardScaler()))])3.3 核心代码片段3.3.1 数据加载defload_dataset(path:Path)-tuple[pd.DataFrame,pd.Series]:# 自动兼容分号/逗号分隔的 CSV 格式datapd.read_csv(path,sepNone,enginepython)ifdata.shape[1]1and;instr(data.columns[0]):datapd.read_csv(path,sep;,quotechar)xdata[FEATURE_COLUMNS]ydata[TARGET_COLUMN]returnx,y3.3.2 模型构建defbuild_model(hidden_layers,max_iter,random_state)-Pipeline:mlpMLPRegressor(hidden_layer_sizestuple(hidden_layers),activationrelu,solveradam,alpha0.0005,max_itermax_iter,early_stoppingTrue,validation_fraction0.15,n_iter_no_change40,)returnPipeline([(feature_scaler,StandardScaler()),(model,TransformedTargetRegressor(regressormlp,transformerStandardScaler())),])3.3.3 模型评估defevaluate(y_true,y_pred)-dict:msemean_squared_error(y_true,y_pred)return{mae:float(mean_absolute_error(y_true,y_pred)),mse:float(mse),rmse:float(np.sqrt(mse)),r2:float(r2_score(y_true,y_pred)),}3.4 运行方式3.4.1 环境安装python -m venv .venv…venv\Scripts\Activate.ps1pip install -r requirements.txt3.4.2 训练模型#默认参数训练python train_mlp_wine_quality.py#自定义参数python train_mlp_wine_quality.py --hidden-layers 256 128 64 --max-iter 3000#使用自定义数据python train_mlp_wine_quality.py --data .\data\my_red_wine.csv3.4.3 预测新样本python predict.py --input .\data\new_wines.csv4. 实验结果与分析4.1 性能指标关键结论测试集 MAE0.458相比基线提升约33%R²0.501模型可解释50%的品质方差训练/测试集指标差距合理无严重过拟合。4.2 可视化结果4.3 误差分析残差以0为中心呈正态分布无系统性偏差边缘评分3/8分样本少预测误差较大数据不平衡中间评分5/6分预测最准训练样本多。项目文件结构基于mlp的神经网络的红酒品质回归预测/├── train_mlp_wine_quality.py # 训练主脚本├── predict.py # 预测脚本├── render_code_card.py # 代码卡片渲染├── requirements.txt # 依赖清单├── README.md # 项目说明├── data/│ ├── winequality-red.csv # 原始数据集│ └── new_wines.csv # 待预测样本└── outputs/├── mlp_wine_quality_model.joblib # 训练好的模型├── metrics.json # 评估指标├── test_predictions.csv # 测试集预测结果├── new_predictions.csv # 新样本预测结果├── prediction_scatter.png # 散点图├── true_vs_rounded_pred_heatmap.png # 热力图├── residual_hist.png # 残差直方图└── result_summary.png # 结果汇总图总结与改进方向6.1 总结本文基于 sklearn 实现了 MLP 红酒品质回归预测模型轻量化数MB、性能优于基线适合教学和轻量部署。6.2 改进方向1 .类别不平衡对边缘评分样本过采样/调整损失权重2 . 模型升级对比 XGBoost/随机森林或升级为 TabNet/PyTorch 模型3 .特征工程构造交互项如 pH×酸度、酒精度×残糖4 .任务转换将回归改为分类低/中/高档次评估准确率。参考文献[1] Cortez, P., et al. (2009). Wine Quality Data Set. UCI Machine Learning Repository.[2] scikit-learn MLPRegressor 官方文档https://scikit-learn.org/stable/modules/generated/sklearn.neural_network.MLPRegressor.html[3] scikit-learn TransformedTargetRegressorhttps://scikit-learn.org/stable/modules/generated/sklearn.compose.TransformedTargetRegressor.html[4] https://www.zhihu.com/question/595477316/answer/3288447234