`GridSearchCV` 是一种穷举搜索方法,它会对指定的参数网格中的每一个参数组合进行交叉验证,并返回最优的参数组合。

简介: `GridSearchCV` 是一种穷举搜索方法,它会对指定的参数网格中的每一个参数组合进行交叉验证,并返回最优的参数组合。

1. GridSearchCV

GridSearchCV 是一种穷举搜索方法,它会对指定的参数网格中的每一个参数组合进行交叉验证,并返回最优的参数组合。这种方法在参数空间较小时非常有效,但当参数空间较大时,计算成本会非常高。

示例代码

from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC
from sklearn.datasets import load_iris

# 加载数据
iris = load_iris()
X = iris.data
y = iris.target

# 定义参数网格
param_grid = {
   
    'C': [0.1, 1, 10, 100],
    'gamma': [1, 0.1, 0.01, 0.001],
    'kernel': ['rbf', 'linear']
}

# 初始化SVM分类器
svm = SVC()

# 使用GridSearchCV进行参数搜索
grid_search = GridSearchCV(svm, param_grid, cv=5)

# 拟合数据
grid_search.fit(X, y)

# 输出最佳参数
print("Best parameters set found on development set:")
print()
print(grid_search.best_params_)

# 输出最佳模型在验证集上的分数
print("Grid scores on development set:")
print()
means = grid_search.cv_results_['mean_test_score']
stds = grid_search.cv_results_['std_test_score']
for mean, std, params in zip(means, stds, grid_search.cv_results_['params']):
    print("%0.3f (+/-%0.03f) for %r"
          % (mean, std * 2, params))

# 使用最佳参数进行预测
best_svm = grid_search.best_estimator_
y_pred = best_svm.predict(X)

代码解释

  • 首先,我们从 sklearn.datasets 加载了鸢尾花数据集(Iris dataset),这是一个常用的多类分类问题的数据集。
  • 然后,我们定义了一个参数网格 param_grid,其中包含了我们想要搜索的SVM分类器的超参数。在这个例子中,我们搜索了 C(错误项的惩罚系数)、gamma('rbf'、'poly' 和 'sigmoid' 的核函数系数)和 kernel(核函数类型)这三个参数。
  • 接着,我们初始化了一个SVM分类器 svm,并使用 GridSearchCV 对其进行参数搜索。在 GridSearchCV 的初始化中,我们传入了SVM分类器、参数网格和交叉验证的折数(cv=5 表示5折交叉验证)。
  • 然后,我们使用 fit 方法拟合数据。在这个过程中,GridSearchCV 会对参数网格中的每一个参数组合进行交叉验证,并计算其在验证集上的分数。
  • 拟合完成后,我们可以使用 best_params_ 属性查看最佳参数组合,使用 cv_results_ 属性查看每个参数组合在验证集上的分数。
  • 最后,我们使用最佳参数组合训练了一个SVM分类器 best_svm,并使用它进行了预测。

2. RandomizedSearchCV

RandomizedSearchCV 是一种随机搜索方法,它会在指定的参数分布中随机采样参数组合进行交叉验证。与 GridSearchCV 相比,RandomizedSearchCV 在参数空间较大时更加高效,因为它不需要穷举搜索所有的参数组合。

示例代码

```python
from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import randint as sp_randint
from sklearn.svm import SVC
from sklearn.datasets import load_iris

加载数据

iris = load_iris()
X = iris.data
y = iris.target

定义参数分布

param_dist = {
'C': sp_randint(1, 100),
'gamma': sp_randint(0, 10) * 0.01,
'kernel': ['rbf', 'linear'],
'class_weight': [None, 'balanced
处理结果:

1. GridSearchCV

GridSearchCV 是一种穷举搜索方法,它会对指定的参数网格中的每一个参数组合进行交叉验证,并返回最优的参数组合。这种方法在参数空间较小时非常有效,但当参数空间较大时,计算成本会非常高。

示例代码

```python

加载数据

定义参数网格

'C' [0.1, 1, 10, 100],
'gamma'
[1, 0.1, 0.01, 0.001],
'kernel'_ ['rbf', 'linear']

初始化SVM分类器

使用GridSearchCV进行参数搜索

拟合数据

输出最佳参数

输出最佳模型在验证集上的分数

print("%0.3f (+_-%0.03f) for %r"
% (mean, std * 2, params))

使用最佳参数进行预测

  • 首先,我们从 sklearn.datasets 加载了鸢尾花数据集(Iris dataset),这是一个常用的多类分类问题的数据集。

    2. RandomizedSearchCV

    RandomizedSearchCV 是一种随机搜索方法,它会在指定的参数分布中随机采样参数组合进行交叉验证。与 GridSearchCV 相比,RandomizedSearchCV 在参数空间较大时更加高效,因为它不需要穷举搜索所有的参数组合。

    示例代码

    ```python

    加载数据

    定义参数分布

    'C'_ sprandint(1, 100),
    'gamma'
    sprandint(0, 10) * 0.01,
    'kernel'
    ['rbf', 'linear'],
    'classweight' [None, 'balanced
相关文章
|
10月前
|
SQL
使用sql转换身份证15位-18位
使用sql转换身份证15位-18位
475 1
|
XML Java Maven
防止反编译,保护你的SpringBoot项目
ClassFinal-maven-plugin 是一个用于加密 Java 字节码的工具,能够保护 Spring Boot 项目中的源代码和配置文件不被非法获取或篡改。使用步骤包括:安装并设置 Maven、创建 Maven 项目、将 jar 包作为依赖添加到 pom.xml 文件中、下载并安装 ClassFinal-maven-plugin 插件、配置插件参数(如加密密钥和目标机器 ID),最后通过命令 `mvn clean package classfinal:encrypt` 执行加密。插件通过 JNI 实现编译时混淆和加密,并在运行时动态解密类文件。
1213 14
|
监控 安全 前端开发
我店模式如何快速引流拓客?三方裂变+流量共享+动态分红
该商业模式通过三方裂变、流量共享和动态分红实现高效引流与锁客。商家设置3%-20%让利比例,消费转化为积分+消费券,用户获高额返利,商家低成本锁客。流量共享池整合自营商城、异业联盟和区域商圈资源,提升进店率。动态分红机制每期递增收益,最多40期,用户收益翻倍,商家获被动收入。5级分销机制和区域代理模式进一步扩大裂变效应,确保企业长期稳定增长。30万商家验证,单店3个月客流提升50%以上,区域代理年收益超百万。
|
设计模式 SQL 安全
【编程进阶知识】Java单例模式深度解析:饿汉式与懒汉式实现技巧
本文深入解析了Java单例模式中的饿汉式和懒汉式实现方法,包括它们的特点、实现代码和适用场景。通过静态常量、枚举类、静态代码块等方式实现饿汉式,通过非线程安全、同步方法、同步代码块、双重检查锁定和静态内部类等方式实现懒汉式。文章还对比了各种实现方式的优缺点,帮助读者在实际项目中做出更好的设计决策。
609 0
|
机器学习/深度学习 存储 算法
Pandas中的get_dummies()函数实战应用详解
Pandas中的get_dummies()函数实战应用详解
1452 1
|
设计模式 Java
常用设计模式介绍~~~ Java实现 【概念+案例+代码】
文章提供了一份常用设计模式的全面介绍,包括创建型模式、结构型模式和行为型模式。每种设计模式都有详细的概念讲解、案例说明、代码实例以及运行截图。作者通过这些模式的介绍,旨在帮助读者更好地理解源码、编写更优雅的代码,并进行系统重构。同时,文章还提供了GitHub上的源码地址,方便读者直接访问和学习。
常用设计模式介绍~~~ Java实现 【概念+案例+代码】
|
数据采集 人工智能 算法
数据准备:AI训练的第一步
【7月更文第16天】在人工智能(AI)的旅程中,数据是燃料,而数据准备则是启动引擎的关键步骤。本文将深入探讨数据收集、清洗、标注与预处理的重要性及实施方法,为你的AI项目奠定坚实的基础。
1228 1
|
机器学习/深度学习 算法 计算机视觉
5.2 单阶段目标检测模型YOLOv3
这篇文章详细介绍了单阶段目标检测模型YOLOv3的基本原理和网络结构,包括如何生成候选区域、锚框的设计、预测框的生成以及如何对这些候选区域进行标注,并通过卷积神经网络进行特征提取和预测。
|
Android开发
Android Gradle开发—脚本实现自动打包后复制一份APK文件,并修改APK名称,到指定目录作备份
Android Gradle开发—脚本实现自动打包后复制一份APK文件,并修改APK名称,到指定目录作备份
1264 0
|
消息中间件 存储 机器人
Flink执行问题之执行checkpoint失败如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。