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

相关推荐
董厂长1 小时前
langchain :记忆组件混淆概念澄清 & 创建Conversational ReAct后显示指定 记忆组件
人工智能·深度学习·langchain·llm
G皮T4 小时前
【人工智能】ChatGPT、DeepSeek-R1、DeepSeek-V3 辨析
人工智能·chatgpt·llm·大语言模型·deepseek·deepseek-v3·deepseek-r1
九年义务漏网鲨鱼4 小时前
【大模型学习 | MINIGPT-4原理】
人工智能·深度学习·学习·语言模型·多模态
元宇宙时间5 小时前
Playfun即将开启大型Web3线上活动,打造沉浸式GameFi体验生态
人工智能·去中心化·区块链
开发者工具分享5 小时前
文本音频违规识别工具排行榜(12选)
人工智能·音视频
产品经理独孤虾5 小时前
人工智能大模型如何助力电商产品经理打造高效的商品工业属性画像
人工智能·机器学习·ai·大模型·产品经理·商品画像·商品工业属性
老任与码5 小时前
Spring AI Alibaba(1)——基本使用
java·人工智能·后端·springaialibaba
蹦蹦跳跳真可爱5895 小时前
Python----OpenCV(图像増强——高通滤波(索贝尔算子、沙尔算子、拉普拉斯算子),图像浮雕与特效处理)
人工智能·python·opencv·计算机视觉
雷羿 LexChien6 小时前
从 Prompt 管理到人格稳定:探索 Cursor AI 编辑器如何赋能 Prompt 工程与人格风格设计(上)
人工智能·python·llm·编辑器·prompt
两棵雪松6 小时前
如何通过向量化技术比较两段文本是否相似?
人工智能