本仓库包含为葡萄酒质量预测开发的最终选定 Keras 集成模型。
该集成模型通过 11 个物理化学输入特征预测葡萄酒质量。每个成员模型首先生成连续的回归输出。最终的集成预测通过对五个选定成员模型的连续输出取平均值,然后进行基于阈值的整数质量转换来计算。
Ensemble_Mixed_Top5Q_MLP_32_16_HuberQ_MLP_16_8Q_MLP_32Q_MLP_64AEPC_MLP_64quality集成成员模型采用了两种预处理策略。
此预处理策略使用从训练集计算的第 1 百分位数和第 99 百分位数对选定特征值进行截断。然后对选定的偏斜特征应用 log1p 变换,并进行 StandardScaler 标准化。
AEPC 是一种项目设计的预处理策略,用于处理上尾极端值。它不是完全截断超过上限的值,而是压缩超额部分,同时保留原始极端值信号的可控部分。
对于超过 AEPC 上限的值,调整后的值计算如下:
adjusted_value = cap + alpha * (original_value - cap)这里,alpha 控制保留多少过量信号。alpha 的值由上尾特征决定,例如尾比率、目标信号和尾部连续性。这使得 AEPC 不像硬限幅那样激进,同时仍能减少极端值的影响。
['chlorides', 'volatile acidity', 'free sulfur dioxide', 'citric acid', 'residual sugar']所选阈值如下:
[3.5, 4.4, 5.65, 6.55, 7.35, 8.5]| 划分 | RMSE Raw | MAE Raw | R2 Raw | 准确率 | Kappa | MAE_int | 宏F1 | 加权F1 |
|---|---|---|---|---|---|---|---|---|
| 验证集 | 0.689850 | 0.531597 | 0.391591 | 0.577551 | 0.344654 | 0.465306 | 0.296927 | 0.555434 |
| 测试集 | 0.693902 | 0.539958 | 0.386628 | 0.572449 | 0.339306 | 0.469388 | 0.277822 | 0.552183 |
与最终单一模型相比,所选集成模型提升了整数质量预测性能。最终单一模型的测试集准确率为0.560204,测试集Kappa系数为0.310787,测试集MAE_int为0.492857;而本集成模型的测试集准确率为0.572449,测试集Kappa系数为0.339306,测试集MAE_int为0.469388。
| 文件 | 描述 |
|---|---|
models/ | 训练好的Keras成员模型 |
preprocess/ | 预处理缩放器和转换参数 |
ensemble_config.json | 集成模型配置和所选阈值 |
preprocess_config.json | 数据集、预处理和训练配置 |
metrics.json | 评估指标 |
member_model_results.csv | 五个成员模型的原始回归结果 |
confusion_matrix_selected.csv | 所选集成模型的混淆矩阵 |
classification_report_selected.txt | 所选集成模型的分类报告 |
inference.py | 推理示例脚本 |
requirements.txt | 所需的Python包 |
from inference import predict_quality
sample = {
"fixed acidity": 7.0,
"volatile acidity": 0.27,
"citric acid": 0.36,
"residual sugar": 20.7,
"chlorides": 0.045,
"free sulfur dioxide": 45.0,
"total sulfur dioxide": 170.0,
"density": 1.001,
"pH": 3.00,
"sulphates": 0.45,
"alcohol": 8.8
}
result = predict_quality(sample)
print(result)数据集主要集中在中等质量分数附近,尤其是5分和6分。因此,对于罕见的极端质量分数,预测结果的可靠性可能较低。
集成模型通过对多个成员模型的预测结果取平均,可以提高预测的稳定性,但对于罕见的极端质量标签,仍可能难以准确预测。