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

机器学习实战笔记32-33:网格搜索原理、参数详解及代码实操

  1. 网格搜索调参

一.数据集划分比例、交叉验证折数一般按经验来

正则化系数、特征衍生系数则需要调参

评估指标:之前是对比训练误差和测试误差来看过拟合还是欠拟合,现在希望有指标来评价

故如果希望模型重点识别1类,则考虑F1-SCORE,其它推荐用ROC-AUC

过程为在训练集训练,验证集上交叉验证的结果作为模型指标,最后在测试集上检验模型

  • 三种搜索方法差别

GridsearchCV会尝试所有可能解,randomizedSearchCV会先采样后搜索,HalvingRandomSearchCV和HalvingGridsearchCV则均会先两两比较,再逐层筛选

GridsearchCV的参数如下:

核心参数:estimator、param_grid

评估参数:scoring、refit(选择一个用于评估最佳模型的评估指标)、cv(交叉验证方式)

性能参数:n_jobs和pre_dispatch(分别表示核心数、任务按照何种方式并行运算),但如果需要答复提升运行速度,建议用randomizedSearchCV或者halving算法

评估器结果查看参数如下:

实操网格搜索代码如下:

# In[1]:

from sklearn.model_selection import GridSearchCV

# In[2]:

get_ipython().run_line_magic('pinfo', 'GridSearchCV')

# In[3]:

from sklearn.datasets import load_iris

# In[4]:

x,y=load_iris(return_X_y=True)#作用是返回tuple类型,否则返回的是Bunch类型

# In[6]:

from  sklearn.model_selection import train_test_split

x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=24)

# In[7]:

from sklearn.linear_model import LogisticRegression

clf=LogisticRegression(max_iter=int(1e6),solver='saga')

# In[8]:

clf.get_params()

# In[17]:

#创造参数空间

param_grid_simple={'penalty':['l1','l2'],'C':[1,0.5,0.1,0.05,0.01]}

# In[18]:

#如果同时需要考虑penalty两种取值怎么办

param_grid_ra=[{'penalty':['l1','l2'],'C':[1,0.5,0.1,0.05,0.01]},

               {'penalty':['elasticnet'],'C':[1,0.5,0.1,0.05,0.01],'l1_ratio':[0.3,0.6,0.9]}]

# In[19]:

#实例化评估器

search=GridSearchCV(estimator=clf,param_grid=param_grid_simple)

# In[20]:

search.fit(x_train,y_train)

# In[21]:

#评估器结果查看

search.best_estimator_

# In[22]:

#查看逻辑回归模型参数

search.best_estimator_.coef_

# In[23]:

#查看训练误差、测试误差

search.best_estimator_.score(x_train,y_train),search.best_estimator_.score(x_test,y_test)

# In[24]:

#最优参数时交叉验证平均得分

search.best_score_

# In[25]:

search.n_splits_


http://www.kler.cn/a/399184.html

相关文章:

  • Vue模块化开发的理解
  • 【AI日记】24.11.17 看 GraphRAG 论文,了解月之暗面
  • 前端开发设计模式——责任链模式
  • QT使用libssh2库实现sftp文件传输
  • Vue2教程002:Vue指令
  • Excel根据条件动态索引单元格范围
  • 关于性能测试:数据库的 SQL 性能优化实战
  • STL序列式容器之priority_queue
  • vue使用List.reduce实现统计
  • 前端开发设计模式——责任链模式
  • acwing算法基础03-递归,枚举
  • 【JavaScript】call、apply、bind
  • 数据结构中的抽象数据类型、逻辑结构、存储结构等到底是什么?
  • LeetCode 445.两数相加 II
  • 【不写for循环】玩玩行列
  • nfs服务器--RHCE
  • 论文学习(四) | 基于数据驱动的锂离子电池健康状态估计和剩余使用寿命预测
  • 后台运行docker compose项目,一直失败,提示:Timeout exceeded while awaiting headers?让我来看看~
  • idea 删除本地分支后,弹窗 delete tracked brank
  • 移门缓冲支架:减少噪音,提升生活质量
  • 【开源免费】基于SpringBoot+Vue.JS购物推荐网站(JAVA毕业设计)
  • Ubuntu22.04 安装mysql8 无法修改端口及配置的问题 坑啊~~~~
  • Uni-APP+Vue3+鸿蒙 开发菜鸟流程
  • Linux中配置ntp服务
  • 计算机编程中的设计模式及其在简化复杂系统设计中的应用
  • 【STM32】MPU6050简介