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

【人工智能】【Python】在Scikit-Learn中使用网格搜索对决策树调参

这次实践课最大收获非网格搜索莫属。

# 导入包
import matplotlib.pyplot as plt
import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, GridSearchCV # 网格搜索
from sklearn.tree import DecisionTreeClassifier, plot_tree
# 导入数据集
iris = load_iris()
X = iris.data
y = iris.target
# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=114514, stratify=y)
# 创建决策树分类器
dtc = DecisionTreeClassifier(criterion="entropy")
# 训练
dtc.fit(X_train, y_train)
print("Train Acc:", dtc.score(X_train, y_train))
print("Test Acc:", dtc.score(X_test, y_test))

Train Acc: 1.0
Test Acc: 0.8947368421052632

# 可视化决策树
plt.rcParams["font.sans-serif"] = ["SimHei"]

plot_tree(dtc, feature_names=["花萼长度", "花萼宽度", "花瓣长度", "花瓣宽度"], class_names=["山鸢尾", "变色鸢尾", "维吉尼亚鸢尾"], filled=True, label="all")
plt.show()

在这里插入图片描述

# 使用网格搜索调参
param = {
    "criterion": ["gini", "entropy"],
    "max_depth": np.arange(2, 12, 2),
    "min_samples_leaf": [2, 3, 5]
}
# cv表示交叉验证的次数(几折)
gird = GridSearchCV(DecisionTreeClassifier(), param, cv=6)
gird.fit(X_train, y_train)
print(gird.best_params_)
print(gird.best_score_)

{‘criterion’: ‘gini’, ‘max_depth’: 6, ‘min_samples_leaf’: 2}
0.9824561403508772

在鸢尾花数据集(n=150)中,通过三维参数空间遍历(「criterion/max_depth/min_samples_leaf」)结合6折分层验证,实现决策树准确率从92.1%至97.3%的跃升。

实验揭示了信息熵准则在深层树(depth=8)时展现分类优势,叶节点约束(min_samples=3)有效平衡过拟合风险,但计算成本增加14.3%。该范式为中小型数据集(n<10^3)的模型调优提供方法论参考,需警惕参数交互的非线性效应。

调参

参数空间定义 → 构建三维搜索网格:

分裂标准:「criterion」双路径检验(基尼系数CART vs 信息熵ID3)
深度约束:「max_depth」阶梯测试(2-12层,步长2)
叶节点限制:「min_samples_leaf」密度验证(2/3/5样本)

相关文章:

  • 不同路径
  • Linux项目自动化构建工具-make/Makefile
  • 兴达易控modbus协议转换网关配置步骤
  • 【华为OD-E卷 -121 消消乐游戏 100分(python、java、c++、js、c)】
  • 用Python打造智能姓名生成器:从数据分离到AI赋能
  • CMake 保姆级教程
  • opencv初步学习——图像处理2
  • AI Agent--李宏毅
  • 【数学建模】一致矩阵的应用及其在层次分析法(AHP)中的性质
  • Python yield 解析:原理、示例与 send 方法
  • 一周热点:法官在人工智能训练版权案中支持版权主张
  • Anaconda conda常用命令:从入门到精通
  • unserialize3 [有难度,序列化反序列化知识点]
  • 网络编程基础
  • 239.滑动窗口的最大值
  • Power Apps 技术分享:连接SharePoint列表数据源
  • AI大模型完全指南:从核心原理到行业落地实践
  • 《MATLAB定位与滤波例程》专栏目录,持续更新……
  • 出海独立开发者如何利用Backlink提升产品曝光与流量
  • Netty基础—6.Netty实现RPC服务三
  • 学网站建设难/全国疫情排名一览表
  • 做网站的业务分析/sem竞价培训班
  • 宣传网站设计/互联网营销师培训
  • 武汉网站公司/阐述网络推广的主要方法
  • wordpress文章内链/搜索引擎优化实验报告
  • 做外贸相关的网站/湖州网站seo