当前位置: 首页
AI教程
决策树分类模型在葡萄酒数据上的训练与预测

决策树分类模型在葡萄酒数据上的训练与预测

热心网友 时间:2026-06-23
转载

一、决策树模型训练

先从训练集说起。建立决策树模型的第一步,当然是准备一份可靠的数据。这里直接采用 scikit-learn 自带的葡萄酒数据集,这是分类任务中非常经典的案例,非常适合用来练习和实践。

先导入必需的 Python 工具包:

import pandas as pd
from sklearn import tree
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
import graphviz

接下来加载数据集,了解其中的结构与内容。

wine = load_wine()

加载后可以确认数据的基本情况:总共包含178条样本,13个特征维度,目标变量有3个分类类别。

葡萄酒数据集信息

如果想更直观地查看数据,可以借助 Pandas 将特征与目标合并显示:

pd.concat([pd.DataFrame(wine.data, columns=wine.feature_names), pd.DataFrame(wine.target)], axis=1)

葡萄酒数据预览

随后,将数据集划分为训练集和测试集。这里让测试集占30%,训练集占70%,这是实践中较为常见的比例。

Xtrain, Xtest, Ytrain, Ytest = train_test_split(wine.data, wine.target, test_size=0.3)

接着便可以构建并训练决策树模型。本示例选择基于信息熵的 ID3 算法进行建模。

# 选择信息熵模式即ID3算法建立决策分类树模型
clf = DecisionTreeClassifier(criterion="entropy")

# 用训练数据建立决策树
clf = clf.fit(Xtrain, Ytrain)

# 用以上训练的决策树,给测试数据返回打分
score = clf.score(Xtest, Ytest)

模型评分

模型训练完成后,仅看评分还不够直观。利用 graphviz 将决策树可视化导出,整棵树的判断逻辑便一目了然。

feature_name = ['酒精','苹果酸','灰','灰的碱性','镁','总酚','类黄酮','非黄烷类酚类','花青素','颜色强度','色调','od280/od315稀释葡萄酒','脯氨酸']
dot_data = tree.export_graphviz(clf,
                                out_file = None,
                                feature_names= feature_name,
                                class_names=["琴酒","雪莉","贝尔摩德"],
                                filled=True,
                                rounded=True)
graph = graphviz.Source(dot_data)
graph.view()

决策树可视化

二、决策树模型微调

模型虽然跑起来了,但你是否直接使用了默认参数?对于决策树而言,默认参数几乎不可能达到最优效果,尤其因为它天生容易过拟合。因此,调参才是让模型从“能用”变为“好用”的关键环节。

1、决策树分类树重要参数介绍

分类树涉及多个参数,核心都在下面这个类的定义中。更详细的说明可参考官方文档

class sklearn.tree.DecisionTreeClassifier(*, criterion='gini', splitter='best', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=None, max_leaf_nodes=None, min_impurity_decrease=0.0, class_weight=None, ccp_alpha=0.0, monotonic_cst=None)

决策树参数总览

2、随机相关参数调整

splitterrandom_statemax_features 这三个参数控制着树在构建过程中的随机性。不同数据集的“黄金组合”往往不同,下图是 DeepSeek 给出的推荐组合,但实际调优仍需要根据自己数据的训练结果反复微调,不存在万能药方。

随机参数推荐组合

3、剪枝相关参数调整

必须高度警惕:决策树是一个天然容易过拟合的模型。它在训练集上表现近乎完美,但一到测试集上就可能原形毕露。因此,剪枝是决策树调优中绕不开的核心环节。

常用的剪枝参数包括 max_depthmin_samples_leafmin_samples_splitmax_features 以及 min_impurity_decrease 等。如何找到这些参数的最优值?最直观的方法是绘制学习曲线——以某个超参数的取值作为横坐标,模型的准确率作为纵坐标,找到曲线的峰值位置。

L = []
L1 = []
# 调节决策树最大深度
for i in range(2, 11):
    dct = DecisionTreeClassifier(criterion='entropy'
                                 , random_state=10
                                 , splitter='random'
                                 , max_depth=i
                                 , min_samples_leaf=10
                                 , min_samples_split=10)
    dct.fit(Xtrain, Ytrain)
    L.append([i, dct.score(Xtest, Ytest)])

# 调节一个节点在分枝后的每个子节点都必须包含的训练样本个数
for j in range(5,15):
    dct1 = DecisionTreeClassifier(criterion='entropy'
                                  , random_state=10
                                  , splitter='random'
                                  , max_depth=3
                                  , min_samples_leaf=j
                                  , min_samples_split=10)
    dct1.fit(Xtrain, Ytrain)
    L1.append([j, dct1.score(Xtest, Ytest)])

a = pd.DataFrame(L, columns = ['max_depth', 'zhunquelv'])
b = pd.DataFrame(L1, columns = ['min_samples_leaf', 'zhunquelv'])
A = [a, b]
plt.figure(figsize=(15, 5), dpi=70)
for k,v in enumerate(A):
    plt.subplot(1,2,k+1)
    plt.plot(v.iloc[:,0], v.zhunquelv, color='orange')
    plt.xticks(v.iloc[:,0])
    plt.xlabel(v.columns[0])
    plt.ylabel('zhunquelv')
    plt.title(f'{v.columns[0]}学习曲线');
    plt.sa vefig('learning_curve.png', bbox_inches='tight')

从输出的学习曲线可以看到,max_depth 取 3 时准确率最高,min_samples_leaf 取 10 时效果最佳。

学习曲线

再看这两个参数组合下的决策树结构:

优化后决策树

其余剪枝参数的调节思路完全相同。建议先从 max_depth 开始,确定最优值之后依次调节其他参数,直到模型达到比较理想的状态。这种每次只调一个参数的策略本质上是一种局部最优的贪心思路,但在实践中通常效果不错。

4、网格搜索选取最佳参数

如果对模型精度有更高要求,并且不太在意训练时长,那么网格搜索是一种更彻底的优化方式。它会把预定义的所有参数组合全部跑一遍,并结合交叉验证选出最优参数。听起来很完美,但代价是计算量可能非常庞大。因此,网格搜索更适合在参数空间不大且计算资源充裕的情况下使用。

从实践经验来看,局部最优往往已经能满足大多数场景,网格搜索更像是“锦上添花”的步骤。

三、训练后的决策树模型文件保存

模型调优完成后,没必要每次重复训练。将其保存下来是最基本的操作。

# 通过pickle来保存训练后的模型文件
import pickle
with open('decision_tree_model.pkl', 'wb') as file:
    pickle.dump(clf, file)

四、加载训练的决策树模型文件,以及对新数据的预测

保存好模型之后,后续需要对新数据进行预测时,直接加载即可。

with open('decision_tree_model.pkl', 'rb') as file:
    clf_loaded = pickle.load(file)

new_data = [[13.17, 2.59, 2.37, 20, 120, 1.65, 0.68, 0.53, 1.46, 9.3, 0.6, 1.62, 840]]
prediction = clf_loaded.predict(new_data)
print(f'预测类别:{prediction[0]}')

预测结果

五、小结

以上就是利用决策树模型对葡萄酒数据进行分类的完整流程,涵盖了训练、调参、保存以及预测。但需要强调的是,这只是一个入门示例。在实际业务数据上,参数调优仍需反复测试与迭代。

决策树的应用场景远不止分类,这里简要总结如下:

  • 分类问题:例如判断一封邮件是否为垃圾邮件,这是最常见的使用场景。
  • 回归问题:通过特征预测连续数值,比如利用房屋属性预测房价。
  • 特征选择:决策树天然能够评估特征的重要性,这对理解数据非常有帮助。
  • 异常检测:例如检测信用卡交易是否存在欺诈行为。
  • 决策分析:在营销场景中,可根据用户特征预测其购买概率,辅助制定精准策略。
来源:https://cloud.tencent.com.cn/developer/article/2695206

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
Pika Windows 2026最新版本地安装配置教程下载地址与环境要求

Pika Windows 2026最新版本地安装配置教程下载地址与环境要求

Pika目前以云端AI视频生成为主,Windows端更适合通过浏览器或PWA方式使用。安装前需确认系统、浏览器、网络与素材规范,并注意账号安全、版权与项目备份。

时间:2026-07-07 06:49
Pika Docker一键部署:镜像拉取、端口映射及数据目录配置

Pika Docker一键部署:镜像拉取、端口映射及数据目录配置

Pika类AI视频工具采用Docker部署前需确认镜像来源、端口占用和数据目录权限。通过拉取镜像、挂载配置与数据目录、设置访问密钥并映射服务端口,可快速完成安装,同时应做好备份、升级回滚和访问控制。

时间:2026-07-07 06:49
Runway安装失败怎么办:常见报错排查与升级回滚方案

Runway安装失败怎么办:常见报错排查与升级回滚方案

Runway安装失败通常与系统版本、网络连通、安装包完整性、显卡驱动、缓存残留和账号环境有关。排查时应先确认官方来源,再按日志、权限、依赖、升级与回滚顺序处理。

时间:2026-07-07 06:49
Pika macOS安装:Apple Silicon与Intel电脑配置步骤

Pika macOS安装:Apple Silicon与Intel电脑配置步骤

Pika主要以网页端方式在macOS使用,AppleSilicon与Intel机型安装思路略有差异。准备好系统版本、浏览器、账号与素材权限后,可通过官网登录、创建桌面快捷方式、配置浏览器与导出目录完成基础环境搭建。

时间:2026-07-07 06:49
Runway本地模型运行教程:下载路径设置与性能优化

Runway本地模型运行教程:下载路径设置与性能优化

Runway本地模型部署适合需要稳定生成、批量处理和私有素材管理的用户,重点包括环境准备、模型下载、目录配置、显存优化、常见报错排查与安全使用边界。

时间:2026-07-07 06:49
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 日榜
  • 周榜
  • 月榜