news 2026/7/26 8:35:10

17-XGBoost-红葡萄酒品质分类预测

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
17-XGBoost-红葡萄酒品质分类预测

1. 需求分析

用XGBoost算法对葡萄酒品质进行多分类预测

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.metrics import classification_report from sklearn.model_selection import train_test_split, GridSearchCV import xgboost as xgb # xgboost包 import joblib

3.1 加载数据

# 1. 获取数据 train = pd.read_csv('./data/winequality-red.csv', sep=';') train.head()

3.2 数据预处理

提取特征和标签;缺失值处理;标签处理;划分数据集

# 2. 数据预处理 # 2.1 提取特征和标签 x = train.iloc[:, :-1] y = train['quality'] y.value_counts() # 2.4 标签处理(xgboost可预测多分类,标签要从0开始) y = y - 3 # 2.5 划分数据集 x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=14, stratify=y)

3.3 特征工程(无)

3.4 模型训练

# 4 模型训练 # 4.1 场景2:XGBoost(默认参数) # 参数解释:objective:目标函数,多分类问题使用multi:softmax;num_class:标签数量 estimator1 = xgb.XGBClassifier(objective='multi:softmax', num_class=len(y.unique()), random_state=666) estimator1.fit(x_train, y_train) y_pre1 = estimator1.predict(x_test) print('XGBoost(默认参数)分类报告:\n', classification_report(y_test, y_pre1, zero_division=0))

3.5 模型评估

# 5. 模型评估 estimator = xgb.XGBClassifier(learning_rate=0.05, max_depth=10, n_estimators=120, objective='multi:softmax', num_class=len(y.unique()), random_state=666) estimator.fit(x_train, y_train) y_pre = estimator.predict(x_test) print('分类报告:\n', classification_report(y_test, y_pre, zero_division=0))

3.6 模型保存

# 6. 模型保存 joblib.dump(estimator, './model/xgb_wine_red_model.pkl')

3.7 模型应用(预测)

# 7. 加载模型 estimator = joblib.load('./model/xgb_wine_red_model.pkl') # 8.模型预测 y_pre = estimator.predict(x_test) y_pre
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/26 8:34:06

5分钟掌握RePKG:Wallpaper Engine壁纸资源解包与转换完全指南

5分钟掌握RePKG:Wallpaper Engine壁纸资源解包与转换完全指南 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg 你是否曾经被Wallpaper Engine中精美的动态壁纸所吸引&…

作者头像 李华
网站建设 2026/7/26 8:33:47

植物大战僵尸杂交版3.18最新版下载

下载链接:杂交版3.18 一、新增植物 狂野狙击射手(阳光600,金卡,场上每多一株价格增加100) 攻击方式:每3秒向最多5只僵尸发射4颗高速豌豆,每颗伤害50,单只僵尸共受200点伤害 特性&…

作者头像 李华
网站建设 2026/7/26 8:29:20

Ubuntu 20.04部署EMQX 5.0:MQTT服务器配置与优化指南

1. 为什么选择EMQX作为MQTT服务器在物联网和消息中间件领域,MQTT协议已经成为事实上的标准协议。EMQX作为一款开源的MQTT消息服务器,在5.0版本后更是实现了质的飞跃。我选择在Ubuntu 20.04上部署EMQX主要基于以下几个考虑:首先是性能表现&…

作者头像 李华
网站建设 2026/7/26 8:25:18

数组作为函数参数为什么要多传一个长度_Day10

数组作为函数参数为什么要多传一个长度?——Day10 学习记录,从数组传参到日历打印 学完函数之后,我开始用函数封装各种功能。但很快就遇到了问题——把数组传给函数后,用 sizeof 计算长度,结果根本不是数组的大小。 后…

作者头像 李华
网站建设 2026/7/26 8:20:03

C++流程控制:顺序、选择与循环结构详解与实战

1. 从“顺序”到“选择”与“循环”:理解程序运行的脉络当我们谈论编程,尤其是像C这样的结构化编程语言时,流程结构是构建程序逻辑的骨架。你可以把它想象成烹饪一道菜的步骤清单。最开始,你可能是按部就班地执行:洗菜…

作者头像 李华
网站建设 2026/7/26 8:19:56

ETP-R1系统:视觉-语言导航在连续空间中的强化学习与拓扑规划

1. 项目背景与核心挑战视觉-语言导航(VLN)是近年来智能体研究领域的热点方向,它要求智能体根据自然语言指令在真实3D环境中完成导航任务。传统方法在离散网格环境中表现尚可,但面对连续空间时常常遭遇三大瓶颈:动作空间…

作者头像 李华