当前位置: 首页 > news >正文

15-Adaboost-红葡萄酒品质分类预测

1. 需求分析

用Adaboost算法对葡萄酒品质进行分类

2. 数据说明

葡萄牙北部绿酒(Vinho Verde)理化检测 + 人工感官评分数据集,2009 年 Cortez 发布于 UCI 机器学习库,同时支持回归(预测分数)、分类(划分品质等级)两大任务。

  • 红葡萄酒:winequality-red.csv1599 行,11 特征 + 1 标签
  • 白葡萄酒:winequality-white.csv4898 行,11 特征 + 1 标签

特征列:

英文名称中文释义业务意义
fixed acidity固定酸度酒石酸、苹果酸等不易挥发有机酸,决定基础酸度
volatile acidity挥发性酸度乙酸,过高会出现醋味,大幅降低品质
citric acid柠檬酸提升果香,少量可柔化口感
residual sugar残糖甜味来源,干型 / 甜型酒区分核心指标
chlorides氯化物含盐量,过高带来咸味、劣质口感
free sulfur dioxide游离二氧化硫抑菌抗氧化,过量产生刺鼻硫磺味
total sulfur dioxide总二氧化硫游离 + 结合 SO₂,食品安全限制指标
density密度与酒精度、含糖量强相关
pH酸碱度酸度平衡,影响稳定性与风味
sulphates硫酸盐提升葡萄酒香气
alcohol酒精度高度数通常对应更高品质评分

标签列:quality

人工感官打分,区间 3~8 分(无 1/2/9/10),类别极度不均衡:

  • 红酒主流:5、6 分;少量 3、4、7、8
  • 白酒主流:5、6 分;极少 3、4、8

分类任务常用标签转换方案

原始 quality 是有序多分类,工程上三种主流处理:

方案 1:二分类

  • 好酒:quality ≥ 6 → label=1
  • 差酒:quality ≤ 5 → label=0 适用:逻辑回归、SVM、二分类树、AUC/KS 评估

方案 2:三分类

  • 低档:3,4
  • 中档:5,6
  • 高档:7,8 适用:有序分类模型(Ordinal Logistic、XGBoost 序分类)

方案 3:原始多分类(6 类:3,4,5,6,7,8)

直接以分数为 6 分类标签,样本分布极不均衡,适合类别不平衡建模(加权损失、过采样)

3. 建模

# 包 import pandas as pd from sklearn.model_selection import train_test_split, GridSearchCV from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import classification_report, roc_curve, auc from sklearn.ensemble import AdaBoostClassifier import matplotlib.pyplot as plt import joblib

3.1 加载数据

# 1. 导入数据 data = pd.read_csv("./data/winequality-red.csv", sep=';') # data.info() print(data['quality'].value_counts()) # 查看标签列分布

3.2 数据预处理

# 2. 数据预处理 # 2.1 提取特征和标签 x = data.iloc[:, :-1].copy() y = data['quality'].copy() # 2.2 缺失值、异常值处理(无) # 2.3 标签列转换 """ 标签列含多分类,需要转换成两类 规则:quality>5 --> good - 0; else --> bad - 1 """ y = y.map(lambda cls : 0 if cls>5 else 1) # 2.4 划分数据集 x_train, x_test, y_train, y_test = train_test_split(x,y,test_size=0.2,random_state=1234)

3.3 特征工程(不用)

3.4 模型训练

3.4.1 场景1:单一cart决策树

# 4. 模型训练、预测、评估 # 4.1 场景1: 单一cart决策树 estimator1 = DecisionTreeClassifier(random_state=1234) estimator1.fit(x_train, y_train) y_pre1 = estimator1.predict(x_test) print('单一决策树模型效果:\n', classification_report(y_test, y_pre1))

3.4.2 场景2:Adaboost(默认参数)

# 4.2 场景2: Adaboost(默认参数) estimator2 = AdaBoostClassifier(random_state=1234) estimator2.fit(x_train, y_train) y_pre2 = estimator2.predict(x_test) print('Adaboost(默认参数)模型效果:\n', classification_report(y_test, y_pre2))

3.4.3 场景3:Adaboost(网格搜索+交叉验证)

# 4.3 场景3: Adaboost(网格搜索+交叉验证) estimator3 = AdaBoostClassifier(random_state=1234) param_grid = { 'n_estimators': [50,100,150,200], 'learning_rate': [0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1] } gs_estimator = GridSearchCV(estimator3, param_grid=param_grid, cv=5) gs_estimator.fit(x_train, y_train) y_pre3 = gs_estimator.predict(x_test) print('Adaboost(网格搜素+交叉验证)模型效果:\n', classification_report(y_test, y_pre2)) print('最佳参数: ', gs_estimator.best_params_) print('最佳准确率', gs_estimator.best_score_)

3.5 模型预测、评估

# 用最佳参数再进行训练 estimator4 = AdaBoostClassifier(n_estimators=200, learning_rate=1, random_state=1234) estimator4.fit(x_train, y_train) y_pre4 = estimator4.predict(x_test) print('Adaboost(最佳参数)模型效果:', classification_report(y_test, y_pre4))

3.6 画图

# 5. 绘图 fpr, tpr, thresholds = roc_curve(y_test, estimator4.predict_proba(x_test)[:,1]) auc_value = auc(fpr, tpr) plt.figure(figsize=(3,3)) plt.plot(fpr, tpr, label='AUC = %.2f' % auc_value) plt.plot([0,1], [0,1], 'r--') plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.legend() plt.show()

3.7 模型保存

# 6. 保存模型 joblib.dump(estimator4, './model/adaboost_wine_red_model.pkl') print('模型保存成功') # 7. 模型加载 # estimator = joblib.load('./model/adaboost_wine_red_model.pkl') # x_new = # 新的数据集df # y_pre = estimator.predict(x_new) # 预测
http://www.jsqmd.com/news/1266399/

相关文章:

  • 在线考试系统稳定性保障:高并发与编译器故障排查优化
  • android 内存
  • 怡生暖通行业排名怎么样,零套路不踩坑,2026最新口碑榜单解析 - 工业品牌热点
  • Ghidra逆向分析入门:从环境搭建到实战解析SimpleCalc程序
  • 2026 年现阶段武进诚信的厂房防水施工公司联系方式,别再瞎忙了!这招让你的厂房防水永不渗漏 - 企业推荐官【认证】
  • 2026年无锡靠谱断桥铝门窗/隔音系统门窗本地源头工厂精选合集 - 海棠依旧大
  • Unity打包报错:渲染管线配置不匹配的根源与系统解决方案
  • T-SQL 变量赋值、全局变量、流程控制+T-SQL WHILE循环、表创建与数据修改+T-SQL 视图(View)
  • # 猜数字游戏 — HarmonyOS交互逻辑与随机算法实现
  • 提示词工程:提升AI交互质量的关键技术与实践
  • 智能合同解析系统:NLP技术提升法务效率
  • 基于springboot的美食网站设计与实现
  • 液下泵正规供应商实力风云榜,口碑推荐零套路选购指南 - 工业品牌热点
  • 配电主站日志异常检测:数据集构建与智能算法实践
  • 【小程序课程设计/毕业设计】基于 SpringBoot + 微信小程序日常心血管风险自测与科普小程序的设计与实现 心脑血管疾病智能预判与健康管理小程序【附源码、数据库、万字文档】
  • 消息源加载“走火入魔”:Spring Boot 多文件国际化顺序混乱的终结指南
  • 扬州运河沿岸房屋漏水高发原因与2026本地维修方案参考 - 雨婺虹房屋维修
  • 2026 年新发布:崇阳优秀的流动摆摊虾饼机加工厂哪家强,别再花钱了!这个小机器如何让你的街边虾饼生意翻倍?-英贝特 - 行业推荐官[官方】--
  • AI浏览器技术解析:从架构变革到开发实践
  • 2026佛山厨房渗水到楼下怎么办?自来水管暗管检测方法,仪器测漏收费标准 - 宅安选房屋修缮
  • 华为MetaERP Oracle EBS R12 vs Oracle Fusion Cloud PO 接收环节完整会计核算流程对比一、底层核心架构与根本差异总览1. 核心设计分水岭表格维度 O
  • 找做全场景防腐涂料配套服务的厂家推荐,价格透明不踩坑,综合实力榜单 - 工业品牌热点
  • 2026大连厨房渗水到楼下怎么办?自来水管暗管检测方法,仪器测漏收费标准 - 宅安选房屋修缮
  • 企业级AI落地:RAG技术架构与实战优化指南
  • C++数据类型与运算符详解:从内存原理到实战避坑指南
  • 基于YOLO的智慧河道检测数据集与应用实践
  • OpenAI桌面端语音控制多Agent:环境配置与实战指南
  • 你的描述符为何“失忆”?——Python __set_name__ 的属性名自动捕获与常见踩坑指南
  • 2026 年现阶段,十堰有实力的屠宰场污水处理设备平台哪家强,揭秘:屠宰场污水处理的终极省钱秘诀-晟广源环保设备 - 行业推荐官【认证】
  • Mac系统自带OpenSSL生成RSA密钥:从原理到实战排错指南