sklearn笔记:调参

news2024/9/21 16:29:54

1 介绍

  • 超参数是不直接在估计器中学习的参数。 在 scikit-learn 中,它们作为参数传递给估计器类的构造函数。 
  • 需要搜索超参数空间以获得最佳交叉验证分数。

  • scikit-learn 中提供了两种通用的参数搜索方法:
    • 对于给定的值,GridSearchCV 会详尽地考虑所有参数组合
    • RandomizedSearchCV 可以从具有指定分布的参数空间中采样给定数量的候选者。
    • 这两个工具都有连续的减半对应搜索方法 HalvingGridSearchCV 和 HalvingRandomSearchCV,它们可以更快地找到一个好的参数组合。

1.1 查找指定估计其的所有超参数

要查找给定估计器的所有参数的名称和当前值,需要使用get_params()

import numpy as np
from sklearn.svm import SVC


X = np.array([[-3, -7], [-2, -10], [1, 1], [2, 5]])
y = np.array([1, 1, 2, 2])
#数据部分


clf=SVC(kernel='linear')
clf.fit(X, y)
#fit数据

clf.get_params()
'''
{'C': 1.0,
 'break_ties': False,
 'cache_size': 200,
 'class_weight': None,
 'coef0': 0.0,
 'decision_function_shape': 'ovr',
 'degree': 3,
 'gamma': 'scale',
 'kernel': 'linear',
 'max_iter': -1,
 'probability': False,
 'random_state': None,
 'shrinking': True,
 'tol': 0.001,
 'verbose': False}
'''

2 Grid Search

  • GridSearchCV 提供的网格搜索从 param_grid 参数指定的参数值网格中详尽地生成候选者。
  • 例如,以下 param_grid 指定应探索两个网格:
    • 一个具有线性内核和 [1, 10, 100, 1000] 中的 C 值
    • 一个具有 RBF 内核,C 值的范围为 [1, 10, 100, 1000],γ值的范围为 [0.001, 0.0001]。
param_grid = [
  {'C': [1, 10, 100, 1000], 'kernel': ['linear']},
  {'C': [1, 10, 100, 1000], 'gamma': [0.001, 0.0001], 'kernel': ['rbf']},
 ]

当“拟合”到数据集上时,所有可能的参数值组合都会被评估并保留最佳组合。

2.1 构造函数使用方法

class sklearn.model_selection.GridSearchCV(
    estimator, 
    param_grid, 
    *, 
    scoring=None,     
    n_jobs=None, 
    refit=True, 
    cv=None, 
    verbose=0, 
    pre_dispatch='2*n_jobs', 
    error_score=nan, 
    return_train_score=False)

2.1.1 主要参数说明

estimator估计器
param_grid
  • 以参数名称 (str) 作为键的字典和要尝试作为值的参数设置列表
  • 或此类字典的列表,在这种情况下,将探索列表中每个字典跨越的网格。 
scoring模型评价标准,默认None,使用estimator的误差估计函数。根据所选模型不同,评价准则不同
refit默认为True,即在搜索参数结束后,用最佳参数结果再次fit一遍全部数据集
cv交叉验证参数,默认None,使用5折交叉验证

 2.1.2 举例

from sklearn import svm, datasets
from sklearn.model_selection import GridSearchCV
iris = datasets.load_iris()
parameters = {'kernel':('linear', 'rbf'), 'C':[1, 10]}
svc = svm.SVC()
clf = GridSearchCV(svc, parameters)
#对svc进行grid search,其中参数范围是parameters中的两两组合

clf.fit(iris.data, iris.target)
#将训练数据和label输入进去,进行拟合

import pandas as pd
pd.DataFrame(clf.cv_results_)

 2.1.3  类属性

cv_results_

各参数组合交叉验证的结果,

(转化成DataFrame后的结果 可见2.1.2例子输出部分)

best_estimator_

搜索选择的估计器,即在数据集上给出最高分数的估计器。

best_score_

最佳估计器的平均交叉验证结果

best_params_

最佳参数组合

classes_

类别的label

n_features_in_

输入的参数维度

 2.1.4 方法

decision_function(X)

对于X中的数据,计算他们在最优估计器上的数值

fit(X,y)
get_params
predict(X)
score(X,Y)
transform(X)

3 Random Search

  •  RandomizedSearchCV 实现了对参数的随机搜索,其中每个设置都是从可能的参数值的分布中采样的。

3.1 主要使用方法

class sklearn.model_selection.RandomizedSearchCV(
    estimator, 
    param_distributions, 
    *, 
    n_iter=10, 
    scoring=None, 
    n_jobs=None, 
    refit=True, 
    cv=None, 
    verbose=0, 
    pre_dispatch='2*n_jobs', 
    random_state=None, 
    error_score=nan, 
    return_train_score=False)

3.1.2 主要参数说明

estimator估计器
param_distributions
  • 以参数名称 (str) 作为键、分布或要尝试的参数列表作为值的字典。
  • 分布需要提供 rvs 抽样方法(例如来自 scipy.stats.distributions 的那些)。
  • 如果给出一个列表,则对其进行均匀采样。
  • 如果给定一个字典列表,首先对各个字典进行均匀采样,然后使用该字典对参数进行采样。
n_iter采样的参数设置数。 n_iter 权衡运行时间与解决方案的质量。
scoring模型评价标准,默认None,使用estimator的误差估计函数。根据所选模型不同,评价准则不同
refit默认为True,即在搜索参数结束后,用最佳参数结果再次fit一遍全部数据集
cv交叉验证参数,默认None,使用5折交叉验证

 3.1.3 举例

from sklearn import svm, datasets
from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import uniform

iris = datasets.load_iris()
distributions = {'kernel':('linear', 'rbf'), 'C':uniform(loc=0, scale=400)}
svc = svm.SVC()

clf = RandomizedSearchCV(svc, distributions)
#对svc进行random search,其中参数是从distributions中的分布中随机选择的
clf.fit(iris.data, iris.target)

import pandas as pd
pd.DataFrame(clf.cv_results_)

 

3.1.4  类属性

cv_results_

各参数组合交叉验证的结果,

(转化成DataFrame后的结果 可见3.1.3例子输出部分)

best_estimator_

搜索选择的估计器,即在数据集上给出最高分数的估计器。

 

best_score_

最佳估计器的平均交叉验证结果

 

best_params_

最佳参数组合

classes_

类别的label

n_features_in_

输入的参数维度

 3.1.5方法

decision_function(X)

对于X中的数据,计算他们在最优估计器上的数值

fit(X,y)
get_params
predict(X)
score(X,Y)
transform(X)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1933.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

客快物流大数据项目(八十四):Impala优化

文章目录 Impala优化 一、​​​​​​​Impala关键配置 二、Impala查询分析

C++ Reference: Standard C++ Library reference: C Library: cstring: strspn

C官网参考链接&#xff1a;strspnhttps://cplusplus.com/reference/cstring/strspn/strspn 函数 <cstring> strspn size_t strspn ( const char * str1, const char * str2 ); 获取字符串中字符集的跨度 返回str1的初始部分的长度&#xff0c;它只包含str2的一部分字符…

FPGA双线性插值图像缩放详细讲解,上板验证稳定通过,提供两套工程源码

开局直接放大招&#xff1a;提供源码及工程&#xff1b; 重点讲解双线性插值图像缩放&#xff1b; 此功能模块使用HLS实现&#xff0c;并已封装导出IP&#xff0c;可在工程中添加并使用&#xff0c;可提供HLS工程源码&#xff1b; 若是用verilog实现双线性插值图像缩放&#xf…

【Java中23种面试常考的设计模式之组合模式(Composite)---结构型模式】

【Java中23种面试常考的设计模式之组合模式(Composite)—结构型模式】 知识回顾: 之前我们讲过的设计模式在这里呦: 【面试最常见的设计模式之单例模式】 【面试最常见的设计模式之工厂模式】 【Java中23种面试常考的设计模式之备忘录模式(Memento)—行为型模式】 【Java中23种…

【每日渗透笔记】后台弱口令+未授权尝试

目录 一、特点&#xff1a; 1.1、特征&#xff1a; 1.2、分析&#xff1a; 1.3、所处情景&#xff1a; 目前&#xff1a; 问题&#xff1a; 二、渗透 一、特点&#xff1a; 1.1、特征&#xff1a; 用户登陆页面 1.2、分析&#xff1a; 毋庸置疑&#xff0c;既然有用户登…

SpringBoot系列之动态生成cron表达式执行定时程序

业务场景 最近需要实现一个功能&#xff0c;根据页面选择的星期&#xff0c;默认是凌晨执行&#xff0c;生成cron表达式&#xff0c;然后定时执行定时程序 环境准备 开发环境 JDK 1.8SpringBoot2.2.1Maven 3.2 开发工具 IntelliJ IDEAsmartGitNavicat15 在IDEA里集成阿里的…

Pycharm 如何自动调整 Python 代码符合 pep8 编码规范

前言 学生时代&#xff0c;写的一手漂亮的好字&#xff0c;能给人留下好的印象。作为 IT 人&#xff0c;写的一手漂亮的代码也会给人留下美好的印象。 代码就是自己的脸面&#xff0c;不管写质量怎样&#xff0c;首先要写的漂亮。Python 有一套 pep8 编码规范标准。 什么是 p…

电感重要参数的理解

电感作为一种储能元件&#xff0c;广泛运用在硬件电路的各个模块。较为常见的有DCDC电路&#xff0c;滤波电路以及振荡电路等。对于电感的选取&#xff0c;大多数人往往只关心感值&#xff0c;感值越大&#xff0c;储能越强&#xff0c;纹波也就越小。然而除了感值以外&#xf…

用Python剪辑视频?太简单了

人生苦短&#xff0c;快学Python&#xff01; 最近我在网上下载一个视频&#xff0c;结果下载到本地是近百个视频片段&#xff0c;为了方便观看只能将这些片段合并为一个视频整体。 不过我并没有搜到能够处理类似情况的小工具&#xff0c;只是发现剪映等软件可以实现视频合并功…

Allegro DFM Ravel Rule丝印文字到测试点pad间距检查

Allegro DFM Ravel Rule丝印文字到测试点pad间距检查 下面介绍丝印到测试点pad间距检查 设置top层丝印文字到孔属性测试点间距,默认值是1mil,可以自己修改这个值 设置bottom层丝印文字到孔属性测试点间距 设置top层丝印文字到通孔pin属性测试点间距 设置bottom层丝印文字…

VAEGAN:理解 VAE 与 GAN【图像生成】

标准VAE(Variational Autoencoder)的原理&#xff1a; 在autoencoder模型中&#xff0c;我们加入一个编码器&#xff0c;它能帮我们把图片编码成向量。然后解码器能够把这些向量恢复成图片。 标准自编码器我们现在获得了一个有点实际用处的网络了。而且我们现在能训练任意多的…

mulesoft Module 4 quiz解析

mulesoft Module 4 quiz1. What is NOT part of a Mule 4 event?2. A Database connector is configured to select rows from a Mysql database.3. What is the minimue required configuration in a flow for a Mule application to compile?4. What is the purpose of the…

Qt读写Excel文件与QXlsx的使用

最近项目比较忙&#xff0c;许久没写博客了&#xff0c;想着还是需要定期整理下学到的和用到的新东西&#xff0c;才有沉淀。刚好最近使用Qt时需要读取excel文件的数据&#xff0c;于是在github找了一个开源库QXlsx&#xff0c;Star数还比较多&#xff0c;应该靠谱&#xff0c;…

【CV】第 2 章:使用本地二进制模式的内容识别

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

MPLS隧道——PE与CE之间运行不同路由协议的情况分析

目录 PE和CE之间运行OSPF路由协议 Ospf的Dmian ID&#xff08;还原属性&#xff09; Ospf的Sham Link属性 OSPF的DN置位与VPN Router Tag PE和CE之间运行BGP路由协议 AS号替换功能 BGP的SoO属性 PE和CE之间可以不同部署不同的路由协议&#xff0c;部署不同的路由协议会存…

量子笔记:多比特量子门

目录 0. 前言 2. 量子多重H门 3. 量子SWAP门 4. 量子CNOT门&#xff08;CX门&#xff09;&#xff1a;受控非门 5. 量子CY和CZ门 6. 量子C*门 6.1 受控S门 6.2 受控H门 6.3 受控Z旋转门 6.4 受控X旋转门 6.4 受控Y旋转门 7. 量子托佛利门(CCNOT门) 8. 量子弗雷德…

【Linux】Linux中的gcc/g++编译器的使用

&#x1f4ac;推荐一款模拟面试、刷题神器 、从基础到大厂面试题&#xff1a;&#x1f449;点击跳转刷题网站进行注册学习 目录 一、编译的过程 1、预处理阶段 1.1预处理的工作——头文件展开、去注释、宏替换、条件编译 1.2外部定义宏&#xff08;-D选项&#xff09; 1.…

记一次网络安全应急响应流程

0x01 事件分析 网站源码被篡改&#xff0c;攻击者一定获取到了权限&#xff0c;那么接下来的思路就是推测攻击者入侵手段&#xff0c;找到业务脆弱点&#xff0c;对服务器进行全方位排查&#xff0c;找到攻击者留下来的痕迹并进行分析处理。 2.1 信息收集 与客户简单沟通后&…

【C++】动态联编、delete/free【有无析构】的使用,虚析构

文章目录动态联编的条件&#xff1a;联编的概念&#xff1a;1. 动态联编&#xff1a;2. 静态联编&#xff1a;静态联编时确认了那些属性&#xff1a;结论&#xff1a;基类指针和派生类指针访问虚函数结论&#xff1a;delete和free的使用条件&#xff1a;1. 没有析构函数时&…

由一个按键程序引发的思考(上)

说起按键程序&#xff0c;只要会单片机的肯定都很熟悉。一般开始学习单片机的时候&#xff0c;入门程序基本都是LED灯和按键。那么这个按键程序有什么特别的吗&#xff0c;还需要专门去思考吗&#xff1f;如果我刚开始学单片机的时候也会这么想&#xff0c;但是随着项目的积累&…