P3 Wine Quality Prediction - Keras Ensemble Mixed Top5代码实现原理:深入理解inference.py
【免费下载链接】p3-wine-quality-keras-ensemble-mixed-top5项目地址: https://ai.gitcode.com/hf_mirrors/neck392/p3-wine-quality-keras-ensemble-mixed-top5
P3 Wine Quality Prediction项目是一个基于Keras的葡萄酒质量预测系统,采用了混合集成学习方法(Mixed Ensemble)结合Top5模型,通过inference.py实现高效的质量预测功能。该系统能够处理葡萄酒的理化特征数据,通过多模型集成策略提供精准的质量评分预测。
🌟 项目核心架构概览
该项目的预测流程主要包含三个关键环节:数据预处理、多模型集成推理和结果转换。整个流程通过inference.py文件实现,其核心功能模块如图1所示:
- 数据预处理:支持两种预处理策略(Quantile_1_99和AEPC)
- 模型集成:加载5个不同配置的MLP模型进行预测
- 结果转换:将连续预测值转换为离散质量标签
项目的核心配置文件ensemble_config.json定义了集成模型的成员、预处理方法和阈值参数,而preprocess_config.json则详细说明了数据预处理的具体步骤和参数。
📊 inference.py核心函数解析
1. 预测主函数:predict_quality
predict_quality是整个推理流程的入口点,实现了从输入数据到最终质量预测的完整流程。其主要步骤包括:
def predict_quality(input_data, base_dir=None): artifacts = load_artifacts(base_dir=base_dir) # 加载所有必要的配置和预处理对象 # 数据验证和转换 # 多模型预测 # 结果集成和转换 return result该函数支持三种输入数据类型:字典(单样本)、字典列表(多样本)和pandas DataFrame,极大提高了使用灵活性。
2. 数据预处理:两种专业策略
项目实现了两种先进的预处理方法,以应对葡萄酒数据中的极端值和分布特性:
Quantile_1_99预处理
这种方法通过分位数裁剪(1%和99%)来处理异常值,并对特定特征应用log1p转换:
def preprocess_quantile(df, feature_columns, qclip_info, log_config, scaler): df_pre = df[feature_columns].copy() # 分位数裁剪 for row in qclip_info["bounds"]: col = row["feature"] lower = row["q01_lower"] upper = row["q99_upper"] df_pre[col] = df_pre[col].clip(lower, upper) # log转换 log_cols = log_config["log_cols"] df_pre[log_cols] = np.log1p(df_pre[log_cols]) # 标准化 return scaler.transform(df_pre)AEPC预处理
Adaptive Excess-Preserving Clipping(自适应超额保留裁剪)是项目设计的特色预处理方法,能够在压缩极端值的同时保留部分超额信息:
def preprocess_aepc(df, feature_columns, aepc_params, log_config, scaler): df_pre = df[feature_columns].copy() # 自适应裁剪 for row in aepc_params["params"]: col = row["feature"] cap = row["aepc_cap"] alpha = row["alpha"] x = df_pre[col].astype(float) over = x > cap df_pre.loc[over, col] = cap + alpha * (x.loc[over] - cap) # log转换和标准化 # ... return scaler.transform(df_pre)3. 模型集成:Top5混合模型策略
项目采用5个精心挑选的MLP模型组成集成系统,每个模型具有不同的网络结构和预处理策略:
- Q_MLP_32_16_Huber:32-16隐藏层,Huber损失函数
- Q_MLP_16_8:16-8隐藏层,MSE损失函数
- Q_MLP_32:32隐藏层,MSE损失函数
- Q_MLP_64:64隐藏层,MSE损失函数
- AEPC_MLP_64:64隐藏层,MSE损失函数,AEPC预处理
这些模型位于models/目录下,每个模型都有对应的model.keras文件和model_config.json配置文件。
集成过程通过简单平均每个模型的连续预测结果实现:
raw_predictions = [] for member_key in member_keys: # 加载模型和预处理 # 模型预测 pred = model.predict(X_scaled, verbose=0).reshape(-1) raw_predictions.append(pred) ensemble_raw = np.mean(raw_predictions, axis=0) # 平均集成4. 结果转换:连续值到质量标签
集成后的连续预测值通过阈值转换为离散质量标签(3-9分):
def apply_thresholds(y_pred_raw, thresholds, labels): y_pred_raw = np.array(y_pred_raw).reshape(-1) y_pred_clip = np.clip(y_pred_raw, 0, 10) # 限制在0-10范围内 thresholds = np.array(thresholds, dtype=float) labels = np.array(labels, dtype=int) idx = np.digitize(y_pred_clip, thresholds) # 根据阈值分箱 return labels[idx], y_pred_clip阈值参数在ensemble_config.json中定义,通过坐标搜索优化获得,以最大化预测准确率:
"thresholds": [3.5, 4.399999999999999, 5.649999999999998, 6.549999999999998, 7.349999999999999, 8.5], "quality_labels": [3, 4, 5, 6, 7, 8, 9]🚀 快速使用指南
安装依赖
首先克隆项目并安装所需依赖:
git clone https://gitcode.com/hf_mirrors/neck392/p3-wine-quality-keras-ensemble-mixed-top5 cd p3-wine-quality-keras-ensemble-mixed-top5 pip install -r requirements.txt单样本预测示例
使用inference.py进行葡萄酒质量预测非常简单,以下是一个示例:
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[["predicted_quality", "continuous_prediction"]])运行后将得到类似以下的输出:
predicted_quality continuous_prediction 0 6 5.873211📈 模型性能与评估
项目提供了详细的模型评估指标,可在metrics.json文件中查看。集成模型在测试集上的主要性能指标包括:
- 准确率:0.583
- 均方误差:0.476
- 决定系数(R²):0.442
更详细的分类报告可在classification_report_selected.txt中找到,混淆矩阵则存储在confusion_matrix_selected.csv文件中。
🎯 总结
P3 Wine Quality Prediction项目通过inference.py实现了一个高效、准确的葡萄酒质量预测系统。其核心优势在于:
- 混合集成策略:结合5个不同配置的MLP模型,平衡偏差和方差
- 专业预处理:提供Quantile_1_99和AEPC两种预处理方法,有效处理数据异常值
- 灵活接口:支持多种输入数据类型,便于集成到不同应用场景
- 可解释性:提供连续预测值和离散质量标签,兼顾预测精度和可解释性
该项目展示了如何通过集成学习方法提升预测性能,同时保持代码的可维护性和易用性,是机器学习实践的优秀范例。
【免费下载链接】p3-wine-quality-keras-ensemble-mixed-top5项目地址: https://ai.gitcode.com/hf_mirrors/neck392/p3-wine-quality-keras-ensemble-mixed-top5
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考