特征工程四-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 兼容模型(分类、回归等)。

相关推荐
:mnong13 分钟前
AI 编程理论与实践 — 课程大纲
人工智能
Luca_kill17 分钟前
深度解析 DeerFlow:字节跳动开源的长时程 AI 超级智能体架构
人工智能·智能体·大模型应用·ai架构·deerflow
PNP Robotics28 分钟前
领军军者|PNP机器人包文涛:以具身智能定义机器人的“生命直觉”
人工智能·深度学习·学习·机器学习·机器人
stereohomology33 分钟前
2026年人工智能技术趋势浅度解析
人工智能
2601_9583205741 分钟前
【小白易懂版】OpenClaw 飞书机器人绑定配置详细教程(含安装包)
人工智能·机器人·飞书·open claw·小龙虾·open claw安装
AI创界者1 小时前
《2026 视觉革命:深度测评 GPT-Image-2,基于 DMXAPI 实现 4K 超分与批量生图实战》
人工智能
云上码厂1 小时前
2023年之前物理信息神经网络PINN papers
人工智能·深度学习·神经网络
aini_lovee1 小时前
多目标粒子群优化(MOPSO)双适应度函数MATLAB实现
人工智能·算法·matlab
Cosolar1 小时前
提示词工程面试题系列 - Zero-Shot Prompting 和 Few-Shot Prompting 的核心区别是什么?
人工智能·设计模式·架构
灵机一物1 小时前
灵机一物AI原生电商小程序、PC端(已上线)-【无标Anthropic 研究深度解析:AI 对就业市场的实际冲击与高危职业排行题】
人工智能·ai·程序员·职业发展·anthropic·就业市场