具有多次重复的 scikit-learn GridSearchCV

2023-12-10

我正在尝试为 SVR 模型获取最佳参数集。 我想使用GridSearchCV超过不同的值C。 然而,从之前的测试中,我注意到训练/测试集的划分极大地影响了整体性能(在本例中为 r2)。 为了解决这个问题,我想实现重复的 5 倍交叉验证 (10 x 5CV)。是否有一种内置的方法来执行它GridSearchCV?

快速解决方案,遵循 sci-kit 中提出的想法官方文档:

NUM_TRIALS = 10
scores = []
for i in range(NUM_TRIALS):
     cv = KFold(n_splits=5, shuffle=True, random_state=i)
     clf = GridSearchCV(estimator=svr, param_grid=p_grid, cv=cv)
     scores.append(clf.best_score_)
print "Average Score: {0} STD: {1}".format(numpy.mean(scores), numpy.std(scores))

这称为嵌套交叉验证。你可以看看官方文档示例引导您走向正确的方向,也可以看看我的其他答案在这里对于类似的方法。

您可以调整这些步骤以满足您的需要:

svr = SVC(kernel="rbf")
c_grid = {"C": [1, 10, 100, ...  ]}

# CV Technique "LabelKFold", "LeaveOneOut", "LeaveOneLabelOut", etc.

# To be used within GridSearch (5 in your case)
inner_cv = KFold(n_splits=5, shuffle=True, random_state=i)

# To be used in outer CV (you asked for 10)
outer_cv = KFold(n_splits=10, shuffle=True, random_state=i)

# Non_nested parameter search and scoring
clf = GridSearchCV(estimator=svr, param_grid=c_grid, cv=inner_cv)
clf.fit(X_iris, y_iris)
non_nested_score = clf.best_score_

# Pass the gridSearch estimator to cross_val_score
# This will be your required 10 x 5 cvs
# 10 for outer cv and 5 for gridSearch's internal CV
clf = GridSearchCV(estimator=svr, param_grid=c_grid, cv=inner_cv)
nested_score = cross_val_score(clf, X=X_iris, y=y_iris, cv=outer_cv).mean()

编辑 - 嵌套交叉验证的描述cross_val_score() and GridSearchCV()

  1. clf = GridSearchCV(估计器,param_grid,cv=inner_cv)。
  2. Pass clf, X, y, outer_cv to cross_val_score
  3. 正如所见cross_val_score的源代码, this X将分为X_outer_train, X_outer_test using outer_cv。 y 也一样。
  4. X_outer_test将被阻止并且X_outer_train将被传递给 clf 进行 fit() (在我们的例子中是 GridSearchCV)。Assume X_outer_train叫做X_inner从这里开始,因为它被传递给内部估计器, 认为y_outer_train is y_inner.
  5. X_inner现在将被分为X_inner_train and X_inner_test using inner_cv在 GridSearchCV 中。 y 也一样
  6. 现在将使用 gridSearch 估计器进行训练X_inner_train and y_train_inner并使用评分X_inner_test and y_inner_test.
  7. The 将重复步骤 5 和 6对于inner_cv_iters(本例中为5)。
  8. 所有内部迭代的平均得分的超参数(X_inner_train, X_inner_test)是最好的,被传递给clf.best_estimator_并适合所有数据,即X_outer_train.
  9. This clf (gridsearch.best_estimator_)然后将使用X_outer_test and y_outer_test.
  10. The 将重复步骤 3 至 9对于outer_cv_iters(此处为10),分数数组将从cross_val_score
  11. 然后我们使用mean()返回nested_score.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有多次重复的 scikit-learn GridSearchCV 的相关文章

随机推荐

  • 如果列表项不在另一个列表中,则删除列表项 - python

    这是我的情况 我有一个 Person 对象的列表 class Person def init self name age self name name self uid str uuid uuid4 self age age 我的 UI 包
  • 第二代 Google 云 SQL - App Engine

    很高兴看到您推出了第二代云 SQL 测试版 然而 我发现它还不适用于 GAE 项目 您能估计一下这个链接何时启用吗 由于第一代 SQL 的缓慢 我们正在我们的精美系统中进行一些重大的基础设施更改 但如果更改不远 我们将坚持使用云 SQL 自
  • 组件包——在哪里划分运行时、设计时、注册时等

    在构建安装组件时 我知道注册单元通常是 应该分开 的事情 但是何时应该划分组件的准则是什么安装分成两个单独的包 通常一个是运行时 另一个是设计时 额外问题 当运行时包和设计时包分开时 可接受的包命名约定是什么 任何特定于 IDE 中使用的内
  • time.strptime() - 参数 0 必须是 str,而不是字节

    显然我已经知道了strftime and strptime不喜欢字节字符串作为参数 但是我在这里陷入困境 因为我需要读取其中保存了不同字符编码的文件内容 并且我需要处理所有它们 并发送每个文件的时间部分该文本文件中的行strptime 一个
  • Json.NET 反序列化 Mongo ObjectId 给出了错误的结果

    我使用官方 Mongo C 驱动程序和 RestSharp 通过 Json NET 调用 Rest Api 来执行序列化 反序列化 假设我有一个 Person 类 如下所示 我想对其进行 POST 和 GET public class Pe
  • R 应用错误 - as.matrix.data.frame() 中的错误

    我遇到了一个莫名其妙的错误 我正在使用以下函数删除任何列中包含 NA 观察值的数据帧的行 removes NA d rows from a dataFrame wipeNArows lt function X rowsToDelete lt
  • 使用 PHP 和 JSON 将图像数据从 XCode 插入 MySQL 数据库

    如何使用 JSON 通过 PHP 从 XCode 在 MySQL 数据库中插入 存储图像 从 xcode 中 您可以 void uploadImage UIImage image NSData imageData UIImageJPEGRe
  • 如何使用 ionic 将 URL 中的图像保存到设备照片库中?

    我是 ionic 的新手 我正在应用程序中使用 ionic 开发应用程序 当用户单击下载按钮时 我需要将图像下载到用户设备 我进行了很多搜索 但找不到任何合适的解决方案 您可以使用Transfer plugin from ionic nat
  • 如何在 Mongoose 中检索嵌入文档中数组的最后一个对象?

    我在编写查询来检索 Story 文档中嵌入的 Comments 数组的最后一个对象时遇到问题 当我执行 db stories find 时 我的集合当前看起来像这样 id ObjectId 55d3a39565698bbc68079e31
  • XMPP 聊天应用程序因使用 VoIP 服务作为后台模式而被拒绝

    我已经完成了一个 XMPP 聊天应用程序 其中我使用 Voip 服务来获取 Voip 密钥 以便在我在后台时接收聊天消息 功能一切正常 但应用程序商店拒绝该应用程序 响应如下 2 16 多任务应用程序只能将后台服务用于其预期目的 VoIP
  • iPad 上模态视图上显示不需要的 SplitView

    在 iPad 上测试我的第一个 SwiftUI 应用程序时 我发现从 ContentView 显示的模态视图在 iPad 上显示为拆分视图 主侧的 UI 被截断 详细信息侧为空 我确实在这里检查了两篇文章 不需要的分割视图 and UISp
  • 读取csv文件c#

    有没有办法将 csv 文件读入矩阵 这样文件中的每个方块都将是矩阵中的一个单元格 有许多开源 CSV 阅读器 而且编写自己的代码也很容易 首先请访问 codeplex com http kbcsv codeplex com 或者Codepr
  • 使用 D3.js 对折线图中的线条进行动画处理

    我有我的折线图 有 2 条线 绘制折线图的数据是从 csv 文件中提取的 谁能解释一下我如何从一个空图表开始 当我单击一个按钮时 我的线条在图表上有动画效果吗 提前致谢 var Button d3 select button var mar
  • 我无法在 R 中安装软件包

    当我尝试在 Rstudio 中安装任何软件包时 我收到以下错误消息 Error in install packages path 1 C Users javad Documents Rhistory win library 3 2 The
  • 处理来自 api 调用的文件下载

    在反应中 我正在根据 John Culviner 中提到的解决方案测试我的文件下载这个帖子 axios post api downloadMyFile data then response gt const url window URL c
  • jQuery.datepicker.formatDate 和时区偏移

    为了处理日期 我使用 jQuery UIpublic我的应用程序中的方法 jQuery datepicker formatDate 请参阅此处的参数和来源 https github com jquery jquery ui blob mas
  • 在 ASP.NET MVC 5 中将整个对象从视图传递到控制器

    有没有办法将整个对象从 ASP NET MVC 5 视图传递到控制器 这是我的情况 我有一个显示数据库表中所有行的视图 视图的模型是 IEnumerable 每行数据后面都有一个链接 可通往支架式 UPDATE 视图 有没有办法将整个对象传
  • C#/IRS ACA - 使用 WCF 4.5 发送带有 MTOM 附件和 GZip 编码的 Web 服务请求

    我们正在尝试通过公开的 Web 服务将数据发送到 IRS 以进行 ACA 数据传输 但由于安全标头中时间戳和签名元素的顺序 我们无法使 WSE 3 0 方法发挥作用 当 TimeStamp 元素出现在 Signature 元素之前时 IRS
  • Windows 上的 Pyusb - 没有可用的后端

    我正在尝试通过 USB 将我的 Python 应用程序接口与 NFC 设备连接 最好的选择似乎是PyUSB 但我无法让它连接到 libusb 后端 我不断得到 ValueError 没有可用的后端 我查看了堆栈跟踪 发现usb backen
  • 具有多次重复的 scikit-learn GridSearchCV

    我正在尝试为 SVR 模型获取最佳参数集 我想使用GridSearchCV超过不同的值C 然而 从之前的测试中 我注意到训练 测试集的划分极大地影响了整体性能 在本例中为 r2 为了解决这个问题 我想实现重复的 5 倍交叉验证 10 x 5