基于mlp的神经网络的红酒品质回归预测

1.作者介绍

王浩宇,男,西安工程大学电子信息学院,2025级研究生

研究方向:古建筑数字化保护

电子邮件:why1904791793@163.com

2 . MLP 神经网络的红酒品质回归预测(PyTorch-free 的 sklearn 全流程实现)知识介绍

2.1 多层感知机(MLP)

MLP 是前馈神经网络,由输入层、隐藏层、输出层组成,层间全连接且通过非线性激活函数引入非线性表达能力:

其中,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 数据标准化

神经网络对输入尺度敏感,采用两阶段标准化:

  1. 特征标准化:StandardScaler将11个特征转为零均值、单位方差;
  2. 目标值标准化:TransformedTargetRegressor包裹 MLP,自动标准化 quality并在预测时还原(提升训练稳定性)。
  3. 实验设计与实现
    3.1 数据集准备
    3.1.1 数据来源
    UCI Machine Learning Repository:
    下载地址:https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv
    3.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( # 目标值标准化+MLP
    regressor=MLPRegressor(...),
    transformer=StandardScaler()
    ))
    ])

3.3 核心代码片段

3.3.1 数据加载

python 复制代码
def load_dataset(path: Path) -> tuple[pd.DataFrame, pd.Series]:
    # 自动兼容分号/逗号分隔的 CSV 格式
    data = pd.read_csv(path, sep=None, engine="python")
    if data.shape[1] == 1 and ";" in str(data.columns[0]):
        data = pd.read_csv(path, sep=";", quotechar='"')
    x = data[FEATURE_COLUMNS]
    y = data[TARGET_COLUMN]
    return x, y

3.3.2 模型构建

python 复制代码
def build_model(hidden_layers, max_iter, random_state) -> Pipeline:
    mlp = MLPRegressor(
        hidden_layer_sizes=tuple(hidden_layers),
        activation="relu",
        solver="adam",
        alpha=0.0005,
        max_iter=max_iter,
        early_stopping=True,
        validation_fraction=0.15,
        n_iter_no_change=40,
    )
    return Pipeline([
        ("feature_scaler", StandardScaler()),
        ("model", TransformedTargetRegressor(regressor=mlp, transformer=StandardScaler())),
    ])

3.3.3 模型评估

python 复制代码
def evaluate(y_true, y_pred) -> dict:
    mse = mean_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.ps1

pip install -r requirements.txt

3.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.csv

3.4.3 预测新样本

python predict.py --input .\data\new_wines.csv

  1. 实验结果与分析

4.1 性能指标

关键结论:

  • 测试集 MAE=0.458,相比基线提升约33%;
  • R²=0.501,模型可解释50%的品质方差;
  • 训练/测试集指标差距合理,无严重过拟合。
    4.2 可视化结果


    4.3 误差分析
  • 残差以0为中心呈正态分布,无系统性偏差;
  • 边缘评分(3/8分)样本少,预测误差较大(数据不平衡);
  • 中间评分(5/6分)预测最准(训练样本多)。
  1. 项目文件结构
    基于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 # 结果汇总图
  2. 总结与改进方向
    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 TransformedTargetRegressor:https://scikit-learn.org/stable/modules/generated/sklearn.compose.TransformedTargetRegressor.html \[4\] https://www.zhihu.com/question/595477316/answer/3288447234

相关推荐
财经资讯数据_灵砚智能2 小时前
基于全球经济类多源新闻的NLP情感分析与数据可视化(夜间-次晨)2026年5月25日
大数据·人工智能·python·信息可视化·自然语言处理·ai编程
孟林洁2 小时前
Java转AI应用开发速成(2)——核心概念扫盲Token、Prompt、Embedding 是什么
人工智能·ai·prompt·embedding
跨境卫士—小依2 小时前
税费前置展示普及之后跨境卖家如何减少结算阶段心理落差
大数据·人工智能·安全·跨境电商·营销策略
2601_955767422 小时前
观复盾 iPhone 17 Pro 护景贴深度评测:参数解析与实测避坑
人工智能·ios·ar·iphone·圆偏振光·磁控溅射
名字不好奇2 小时前
大模型的思考模式:它真的在“想“吗?
人工智能·算法
weixin_468466852 小时前
大语言模型快速部署与调用指南
人工智能·ai·自然语言处理·大模型·云计算·大语言模型·本地化部署
LuminWave2 小时前
多维场景落地,3D激光雷达成机器人产业核心感知基石
人工智能·3d·机器人
vivo互联网技术2 小时前
AI 导购在 vivo 官网的落地实践
机器学习·架构·agent
时光飞逝的日子2 小时前
从 Copilot 到智能体:2026 年 AI 编程工具全栈测评
人工智能·copilot
jiayong232 小时前
harness与hermes-agent的区别
人工智能·ai·智能体·harness·hermes-agent