自定义交叉验证拆分sklearn

2024-03-08

我正在尝试在 sklearn 中拆分数据集以进行交叉验证和 GridSearch。 我想定义自己的分割,但 GridSearch 只采用内置的交叉验证方法。

但是,我无法使用内置的交叉验证方法,因为我需要某些示例组位于同一折叠中。 所以,如果我有例子: [A1、A2、A3、A4、A5、B1、B2、B3、C1、C2、C3、C4、...、Z1、Z2、Z3]

我想执行交叉验证,以便每个组 [A、B、C...] 中的示例仅存在于一个折叠中。

即 K1 包含 [D,E,G,J,K...],K2 包含 [A,C,L,M,...],K3 包含 [B,F,I,...] 等


这种类型的事情通常可以用sklearn.cross_validation.LeaveOneLabelOut。您只需要构建一个对您的组进行编码的标签向量。即,所有样本K1会带标签1,所有样本在K2将采用标签 2,依此类推。

这是一个带有假数据的完全可运行的示例。重要的线路是创建cv对象,以及调用cross_val_score

import numpy as np

n_features = 10

# Make some data
A = np.random.randn(3, n_features)
B = np.random.randn(5, n_features)
C = np.random.randn(4, n_features)
D = np.random.randn(7, n_features)
E = np.random.randn(9, n_features)

# Group it
K1 = np.concatenate([A, B])
K2 = np.concatenate([C, D])
K3 = E

data = np.concatenate([K1, K2, K3])

# Make some dummy prediction target
target = np.random.randn(len(data)) > 0

# Make the corresponding labels
labels = np.concatenate([[i] * len(K) for i, K in enumerate([K1, K2, K3])])

from sklearn.cross_validation import LeaveOneLabelOut, cross_val_score

cv = LeaveOneLabelOut(labels)

# Use some classifier in crossvalidation on data
from sklearn.linear_model import LogisticRegression

lr = LogisticRegression()
scores = cross_val_score(lr, data, target, cv=cv)

然而,您当然可能会遇到这样的情况:您想完全手动定义折叠。在这种情况下,您需要创建一个iterable(例如list) 的情侣(train, test)通过索引指示将哪些样本纳入每次折叠的训练和测试集中。让我们检查一下:

# create train and test folds from our labels:
cv_by_hand = [(np.where(labels != label)[0], np.where(labels == label)[0])
               for label in np.unique(labels)]

# We check this against our existing cv by converting the latter to a list
cv_to_list = list(cv)

print cv_by_hand
print cv_to_list

# Check equality
for (train1, test1), (train2, test2) in zip(cv_by_hand, cv_to_list):
    assert (train1 == train2).all() and (test1 == test2).all()

# Use the created cv_by_hand in cross validation
scores2 = cross_val_score(lr, data, target, cv=cv_by_hand)


# assert equality again
assert (scores == scores2).all()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自定义交叉验证拆分sklearn 的相关文章

  • Python 中的 Lanczos 插值与 2D 图像

    我尝试重新缩放 2D 图像 灰度 图像大小为 256x256 所需输出为 224x224 像素值范围从 0 到 1300 我尝试了两种使用 Lanczos 插值来重新调整它们的方法 首先使用PIL图像 import numpy as np
  • 将 saxon 与 python 结合使用

    我需要使用 python 处理 XSLT 目前我正在使用仅支持 XSLT 1 的 lxml 现在我需要处理 XSLT 2 有没有办法将 saxon XSLT 处理器与 python 一起使用 有两种可能的方法 设置一个 HTTP 服务 接受
  • OpenCV Python cv2.mixChannels()

    我试图将其从 C 转换为 Python 但它给出了不同的色调结果 In C Transform it to HSV cvtColor src hsv CV BGR2HSV Use only the Hue value hue create
  • Python - StatsModels、OLS 置信区间

    在 Statsmodels 中 我可以使用以下方法拟合我的模型 import statsmodels api as sm X np array 22000 13400 47600 7400 12000 32000 28000 31000 6
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • python 相当于 R 中的 get() (= 使用字符串检索符号的值)

    在 R 中 get s 函数检索名称存储在字符变量 向量 中的符号的值s e g X lt 10 r lt XVI s lt substr r 1 1 X get s 10 取罗马数字的第一个符号r并将其转换为其等效整数 尽管花了一些时间翻
  • 测试 python Counter 是否包含在另一个 Counter 中

    如何测试是否是pythonCounter https docs python org 2 library collections html collections Counter is 包含在另一个中使用以下定义 柜台a包含在计数器中b当且
  • 使用 Tkinter 显示 numpy 数组中的图像

    我对 Python 缺乏经验 第一次使用 Tkinter 制作一个 UI 显示我的数字分类程序与 mnist 数据集的结果 当图像来自 numpy 数组而不是我的 PC 上的文件路径时 我有一个关于在 Tkinter 中显示图像的问题 我为
  • OpenCV 无法从 MacBook Pro iSight 捕获

    几天后 我无法再从 opencv 应用程序内部打开我的 iSight 相机 cap cv2 VideoCapture 0 返回 并且cap isOpened 回报true 然而 cap grab 刚刚返回false 有任何想法吗 示例代码
  • BeautifulSoup 中的嵌套标签 - Python

    我在网站和 stackoverflow 上查看了许多示例 但找不到解决我的问题的通用解决方案 我正在处理一个非常混乱的网站 我想抓取一些数据 标记看起来像这样 table tbody tr tr tr td td td table tr t
  • Flask如何获取请求的HTTP_ORIGIN

    我想用我自己设置的 Access Control Allow Origin 标头做出响应 而弄清楚请求中的 HTTP ORIGIN 参数在哪里似乎很混乱 我在用着烧瓶 0 10 1 以及HTTP ORIGIN似乎是这个的特点之一object
  • 在Python中获取文件描述符的位置

    比如说 我有一个原始数字文件描述符 我需要根据它获取文件中的当前位置 import os psutil some code that works with file lp lib open path to file p psutil Pro
  • 如何在Python中对类别进行加权随机抽样

    给定一个元组列表 其中每个元组都包含一个概率和一个项目 我想根据其概率对项目进行采样 例如 给出列表 3 a 4 b 3 c 我想在 40 的时间内对 b 进行采样 在 python 中执行此操作的规范方法是什么 我查看了 random 模
  • 为字典中的一个键附加多个值[重复]

    这个问题在这里已经有答案了 我是 python 新手 我有每年的年份和值列表 我想要做的是检查字典中是否已存在该年份 如果存在 则将该值附加到特定键的值列表中 例如 我有一个年份列表 并且每年都有一个值 2010 2 2009 4 1989
  • 有没有办法检测正在运行的代码是否正在上下文管理器内执行?

    正如标题所述 有没有办法做到这样的事情 def call back if called inside context print running in context else print called outside context 这将
  • Conda SafetyError:文件大小不正确

    使用创建 Conda 环境时conda create n env name python 3 6 我收到以下警告 Preparing transaction done Verifying transaction SafetyError Th
  • Python:如何将列表列表的元素转换为无向图?

    我有一个程序 可以检索 PubMed 出版物列表 并希望构建一个共同作者图 这意味着对于每篇文章 我想将每个作者 如果尚未存在 添加为顶点 并添加无向边 或增加每个合著者之间的权重 我设法编写了第一个程序 该程序检索每个出版物的作者列表 并
  • 使用 Python 的 matplotlib 选择在屏幕上显示哪些图形以及将哪些图形保存到文件中

    我想用Python创建不同的图形matplotlib pyplot 然后 我想将其中一些保存到文件中 而另一些则应使用show 命令 然而 show 显示all创建的数字 我可以通过调用来避免这种情况close 创建我不想在屏幕上显示的绘图
  • Rocket UniData/UniVerse:ODBC 无法分配足够的内存

    每当我尝试使用pyodbc连接到 Rocket UniData UniVerse 数据时我不断遇到错误 pyodbc Error 00000 00000 Rocket U2 U2ODBC 0302810 Unable to allocate
  • 用于验证目的的动态查找方法

    我正在使用 Ruby on Rails 3 0 7 我想在运行时查找一些记录以进行验证 但为该查找方法传递 设置一个值 也就是说 在我的班级中 我有以下内容 class Group lt lt ActiveRecord Base valid

随机推荐

  • haproxy:获取主机名

    我正在尝试获取请求者主机 IP 因为它涉及 haproxy 节点 我的 haproxy 配置如下 frontend www http bind 9000 http request redirect location https fi 914
  • 不知道如何构建任务“路线”

    我无法执行rake routes即使routes rb文件为空 这是输出 rake routes rake aborted Don t know how to build task routes See the list of availa
  • Linux shell:使用 grep 和 fzf 交互式模糊搜索文件中的内容

    我想编写一个 shell 脚本 在特定目录 例如我的 config 文件夹 中的所有文件中搜索模式 使用 grep 我写了以下内容 grep Ril
  • Zend-framework DB:OR 代替 AND 运算符

    有这样的 zend 查询 select this gt table gt select gt where title LIKE searchWord gt where description LIKE searchWord gt where
  • Android Marshmallow (6.0) 上的 vibrate_when_ringing

    在我的代码中我有 Settings System putInt this getContentResolver vibrate when ringing isVibrateWhenRinging 1 0 使用以下权限
  • 为什么 Bootstrap 导航栏总是折叠的? [复制]

    这个问题在这里已经有答案了 我更新到了 ng bootstrap 的 v1 0 beta 现在导航栏总是折叠的 当我单击汉堡包来切换菜单时 它会打开 但垂直而不是水平显示内容 我已经包含了下面的导航代码 和以前一样 此时我无法弄清楚问题是否
  • SDK 3.1:如何判断SDK是否使用iOS6账号?

    如果我在 iOS6 中设置了 Facebook 帐户 但用户已将其关闭 则 SDK 只会向我提供 FBSessionStateClosedLoginFailed 状态 由此 我无法判断用户是否在 iOS 中关闭了我们的服务 情况 1 或者没
  • 特定分支的 Github 拉取请求模板

    是否可以为特定分支分配拉取请求模板 使用查询参数是唯一的解决方法吗 查询参数 https help github com articles about automation for issues and pull requests with
  • leaflet Js自定义控制按钮添加(文本、悬停)

    我跟着这个控制按钮传单教程 http www coffeegnome net control button leaflet 这对我有用 现在我想 当我将鼠标悬停在按钮上时显示一些文本 就像缩放按钮一样 当我将鼠标悬停在按钮上时更改按钮的颜色
  • 强制 goroutine 进入同一线程

    有没有办法确保 goroutine 只在特定的操作系统线程中运行 例如 当 GUI 操作必须在 GUI 线程中运行 但可能有多个 goroutine 运行 GUI 代码时 GOMAXPROCS 1 从技术上讲可以完成这项工作 但这违背了多线
  • Visual Studio 中 F# 的代码折叠

    我发现我倾向于用 F 编写很长的源文件 F 中的一些开源项目也有很长的源文件 例如用于 Excel 的 FPersec 和 F 因此 如果 VS 中可以为 F 提供代码折叠 即使是非常有限的支持 那将会非常有帮助 例如 在模块中 我们可以折
  • Java - Swing 在 JTextArea 中设置文本颜色

    我有一个 JTextArea 其文本设置为一串信息 在这串信息中 我有一个变量 我希望将其颜色为红色 为此 我按如下方式编辑该字符串 Result font color red negativeValue font 我希望这会给出结果 其中
  • 即使运行迁移后,Django 编程错误列也不存在

    I run python manage py makemigrations我得到 未检测到任何变化 然后 python manage py migrate我得到 无需申请迁移 然后 我尝试将更改推送到生产中 git推送heroku大师 一切
  • 在页面加载时打开 Colorbox

    我一直在尝试使颜色框在页面加载时工作 但我只能看到带有纯背景的加载 我用了这个代码 fn colorbox id title open true 您可以在这里找到演示 http www bloggermint com demos popup
  • 如何创建调用 IEnumerable.Any(...) 的表达式树?

    我正在尝试创建一个表示以下内容的表达式树 myObject childObjectCollection Any i gt i Name name 为了清楚起见 我缩短了以下内容 myObject childObjectCollection
  • 如何下载一个网页的所有图片并以原来的名称保存?

    我编写了一个小型 Python 脚本 使用 selenium 从网站下载图片 from selenium import webdriver import urllib request class FirefoxTest def firefo
  • XC 测试框架 iOS(XCode 6.1) 测试会话退出(80) 未签入

    我在 XCode 中有一个运行良好的项目 但是当我尝试使用 XCTestCase 测试框架测试它时 出现此错误 测试会话已退出 80 而未签入 可执行文件未提供与当前进程兼容的体系结构 该项目的架构设置是 标准架构 armv7 arm64
  • 从 xml 元素中选择属性

    我试图从我的根节点中选择一个属性 但我在选择部分上不断收到空异常 获取属性值的正确方法是什么 我试图获取属性值的值 SymbolicName xml文档
  • Angular 4 中 Model 对象的 Getter 和 Setter

    如何使 getter 和 setter 在我的模型类中工作 我的目标是在输入 包含日期 更新时计算所选日期的整数值 我打算在 setter 中执行此操作 但 Angular 4 忽略了我模型的 setter 和 getter 我的模型类 e
  • 自定义交叉验证拆分sklearn

    我正在尝试在 sklearn 中拆分数据集以进行交叉验证和 GridSearch 我想定义自己的分割 但 GridSearch 只采用内置的交叉验证方法 但是 我无法使用内置的交叉验证方法 因为我需要某些示例组位于同一折叠中 所以 如果我有