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

特征工程四-2:使用GridSearchCV 进行超参数网格搜索(Hyperparameter Tuning)的用途

1. GridSearchCV 的作用

GridSearchCV(网格搜索交叉验证)用于:

  • 自动搜索 给定参数范围内的最佳超参数组合。
  • 交叉验证评估 每个参数组合的性能,避免过拟合。
  • 返回最佳模型,可直接用于预测或分析。

2. 代码逐行解析

(1) 创建 GridSearchCV 对象
grid = GridSearchCV(model,       # 要优化的模型(如 RandomForest、SVM 等)params,      # 待搜索的参数网格(字典或列表格式)error_score=0.  # 如果某组参数拟合报错,将该组合得分设为 0
)
  • model:已经定义的模型实例(如 model = RandomForestClassifier())。

  • params:参数网格,格式示例:

    params = {'n_estimators': [50, 100],  # 决策树数量'max_depth': [5, 10]        # 树的最大深度
    }
    
  • error_score=0.
    当某组参数导致模型拟合失败(如不兼容参数)时,将该参数组合的验证得分设为 0,避免程序中断。

(2) 执行网格搜索
grid.fit(X, y)  # 用数据 X 和标签 y 拟合模型
  • params 中的所有参数组合进行尝试,并通过交叉验证(默认 5 折)评估性能。
  • 最终确定 最佳参数组合,并重新训练模型(用最佳参数在整个数据集上训练)。

3. 关键输出

完成 fit 后,可通过以下属性获取结果:

  • 最佳参数

    print(grid.best_params_)
    # 输出示例:{'max_depth': 10, 'n_estimators': 100}
    
  • 最佳模型的交叉验证得分

    print(grid.best_score_)
    
  • 最佳模型实例(可直接用于预测):

    best_model = grid.best_estimator_
    best_model.predict(X_test)
    

4. 注意事项

  1. 参数网格设计

    • 范围过大可能导致计算耗时,建议先用粗网格筛选,再细化。

    • 示例:

      params = {'C': [0.1, 1, 10], 'kernel': ['linear', 'rbf']}  # SVM 参数
      
  2. 交叉验证控制

    • 可通过 cv 参数调整折数(如 cv=10)。
    • 使用 scoring 指定评估指标(如 scoring='accuracy')。
  3. 替代方案

    • 如果参数空间较大,可用 RandomizedSearchCV(随机搜索,更快)。

5. 完整示例

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV# 定义模型和参数网格# 实例化机器学习模型
rf = RandomForestClassifier()
lr = LogisticRegression()
knn = KNeighborsClassifier()
dt = DecisionTreeClassifier()# 逻辑回归
lr_params/ = {'C': [1e-1, 1e0, 1e1, 1e2], 'penalty': ['l1', 'l2']}
# KNN
knn_params = {'n_neighbors': [1, 3, 5, 7]}
# 决策树
dt_params = {'max_depth': [None, 1, 3, 5, 7]}
# 随机森林
rf_params = {'n_estimators': [10, 50, 100], 'max_depth': [None, 1, 3, 5, 7]}
# model=rf/lr/knn/dt,params=lr_params/knn_params/dt_params/rf_params# 网格搜索
grid = GridSearchCV(model, params, error_score=0.)
grid.fit(X_train, y_train)# 输出最佳参数
print("Best parameters:", grid.best_params_)

总结

  • 用途:自动化超参数优化,提升模型性能。
  • 核心参数model(模型)、params(参数网格)、error_score(容错处理)。
  • 输出:通过 best_params_best_score_ 等获取最佳结果。

适用于任何 Scikit-learn 兼容模型(分类、回归等)。

http://www.xdnf.cn/news/2934.html

相关文章:

  • 基于开闭原则优化数据库查询语句拼接方法
  • KenticoCMS 文件上传导致xss漏洞复现(CVE-2025-2748)
  • RN 获取视频封面,获取视频第一帧
  • 【免费下载】1985-2023年全国土地利用数据
  • 《算法笔记》10.5小节——图算法专题->最小生成树 问题 B: Freckles
  • 当前HPLC载波无法满足全量数据分钟级采集需求的主要原因
  • STM32 SPI通信协议
  • 从整体上把握操作系统的作用,以及理解进程状态是什么
  • EtherCAT转Profinet网关,包装产线的“语言翻译器”
  • python:练习:2
  • 查看Mysql版本
  • c/c++之信号处理<signal.h>
  • 【vue3】黑马程序员前端Vue3小兔鲜电商项目【五】
  • 问题排查:calss extends 后页面加载不出来(忘记加super),打包后不报错;遇到问题可以适当出去走一下,让脑子休息一下
  • AimRT 从零到一:官方示例精讲 —— 五、Parameter示例.md
  • WPF(Windows Presentation Foundation)的内容模型
  • 可视化图解算法: 判断是不是二叉搜索树(验证二叉搜索树)
  • SEO优化指南与实战技巧
  • centos安装部署配置kafka
  • Vue常用的修饰符有哪些有什么应用场景(含deep seek讲解)
  • 通用事件库IO多路复用技术选型与设计
  • 常见位运算总结
  • 塑料材料工程师简历模板
  • C#进阶学习(十七)PriorityQueue<TElement, TPriority>优先级队列的介绍
  • 阿里云服务器 篇十二:加入 Project Honey Pot 和使用 http:BL
  • 万象生鲜配送系统代码2025年4月29日更新日志
  • Java练习3
  • c语言的常用的预处理指令和条件编译
  • __proto__与prototype
  • 误在非开发分支上开发解决方案