Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用gridsearch优化scikit中的自定义高斯进程内核

使用gridsearch优化scikit中的自定义高斯进程内核
EN

Stack Overflow用户
提问于 2019-11-19 16:33:04
回答 1查看 1.1K关注 0票数 0

我正在使用高斯进程,当我使用scikit-learn GP模块时,我很难使用gridsearchcv创建和优化自定义内核。描述这个问题的最好方法是使用classic Mauna Loa example,其中适当的内核是使用已经定义的内核(如RBFRationalQuadratic )的组合来构造的。在该示例中,自定义内核的参数没有被优化,而是被视为给定的参数。如果我想运行更一般的情况,希望使用交叉验证来估计这些超参数,该怎么办?我应该如何构建自定义内核,然后为网格搜索构建相应的param_grid对象?

以一种非常天真的方式,我可以使用如下内容构建一个自定义内核:

代码语言:javascript
运行
AI代码解释
复制
def custom_kernel(a,ls,l,alpha,nl):
    kernel = a*RBF(length_scale=ls) \
    + b*RationalQuadratic(length_scale=l,alpha=alpha) \
    + WhiteKernel(noise_level=nl)
    return kernel

但是,当然不能使用GaussianProcessRegressor(kernel=custom_kernel(a,ls,l,alpha,nl))gridsearchcv调用此函数。

this SO question提供了一种可能的解决方法,但是我想知道是否有比从头开始编写内核(以及它的超参数)更容易的方法来解决这个问题,因为我希望使用标准内核的组合,也有可能将它们混合在一起。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-28 16:54:11

这就是我得到的结果。它回答了这个问题,但是对于毛纳罗亚的例子来说,它真的很慢,然而,这可能是一个很难处理的数据集:

代码语言:javascript
运行
AI代码解释
复制
from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.model_selection import GridSearchCV
from sklearn.gaussian_process.kernels import ConstantKernel,RBF,WhiteKernel,RationalQuadratic,ExpSineSquared
import numpy as np
from sklearn.datasets import fetch_openml

# from https://scikit-learn.org/stable/auto_examples/gaussian_process/plot_gpr_co2.html
def load_mauna_loa_atmospheric_co2():
    ml_data = fetch_openml(data_id=41187)
    months = []
    ppmv_sums = []
    counts = []

    y = ml_data.data[:, 0]
    m = ml_data.data[:, 1]
    month_float = y + (m - 1) / 12
    ppmvs = ml_data.target

    for month, ppmv in zip(month_float, ppmvs):
        if not months or month != months[-1]:
            months.append(month)
            ppmv_sums.append(ppmv)
            counts.append(1)
        else:
            # aggregate monthly sum to produce average
            ppmv_sums[-1] += ppmv
            counts[-1] += 1

    months = np.asarray(months).reshape(-1, 1)
    avg_ppmvs = np.asarray(ppmv_sums) / counts
    return months, avg_ppmvs

X, y = load_mauna_loa_atmospheric_co2()

# Kernel with parameters given in GPML book
k1 = ConstantKernel(constant_value=66.0**2) * RBF(length_scale=67.0)  # long term smooth rising trend
k2 = ConstantKernel(constant_value=2.4**2) * RBF(length_scale=90.0) \
    * ExpSineSquared(length_scale=1.3, periodicity=1.0)  # seasonal component
# medium term irregularity
k3 = ConstantKernel(constant_value=0.66**2) \
    * RationalQuadratic(length_scale=1.2, alpha=0.78)
k4 = ConstantKernel(constant_value=0.18**2) * RBF(length_scale=0.134) \
    + WhiteKernel(noise_level=0.19**2)  # noise terms
kernel_gpml = k1 + k2 + k3 + k4
gp = GaussianProcessRegressor(kernel=kernel_gpml)

# print parameters
print(gp.get_params())

param_grid = {'alpha': np.logspace(-2, 4, 5),
              'kernel__k1__k1__k1__k1__constant_value': np.logspace(-2, 4, 5),
              'kernel__k1__k1__k1__k2__length_scale': np.logspace(-2, 2, 5),
              'kernel__k2__k2__noise_level':np.logspace(-2, 1, 5)
              }
grid_gp = GridSearchCV(gp,cv=5,param_grid=param_grid,n_jobs=4)
grid_gp.fit(X, y)

对我有帮助的是,首先将模型初始化为gp = GaussianProcessRegressor(kernel=kernel_gpml),然后使用get_params属性来获得模型超参数的列表。

最后,我注意到在他们的book中,拉斯穆森和威廉姆斯似乎使用了留下一个交叉验证来调优超参数。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58938819

复制
相关文章
C#-VsCode如何运行C#代码
VsCode作为一款优秀的代码编辑器,有调试代码的功能,我们必须要来玩一玩这个,这里就以运行c#代码为例子,简单的说一下吧。
kdyonly
2023/03/03
2.2K0
html语言代码超链接,html 超链接 word html超链接代码
“打开/保存”是因浏览者的浏览器而异的,假如浏览者的电脑没有装word软件,那么,无论什么情况,都是打不开的,你只能选择保存(选择打开的话,电脑会让你选择使用什么软件来打开);如果浏览者的电脑装了word软件,那么如果电脑的安全级别高一些,一样会提示“打开/保存”,为的是防止直接打开病毒文件。
全栈程序员站长
2022/09/14
21.2K0
如何让软件以 System 权限运行
本文只是告诉大家调试 System 运行软件时可以如何快速让一个应用以 System 权限运行。使用 PsExec 可以让软件以 System 账户运行
林德熙
2020/02/18
2.7K0
html中超链接使用_HTML超链接代码
html超链接的写法是e69da5e6ba903231313335323631343130323136353331333431353431使用a标签,如:百度一下,你就知道。
全栈程序员站长
2022/09/18
1.3K0
Outlook如何备份邮件
点击outlook菜单栏上的“文件”选项,可以看到主界面右侧有一个“添加账户”的选项。
周小董
2019/03/25
4.1K0
Outlook如何备份邮件
C#字符串截取
常用字符串截取 string str="123abc456"; int i=3; 1 取字符串的前i个字符 str=str.Substring(0,i); // or  str=str.Remove(i,str.Length-i);  2 去掉字符串的前i个字符: str=str.Remove(0,i);  // or str=str.Substring(i);  3 从右边开始取i个字符: str=str.Substring(str.Length-i); // or str=str.Remove(0,st
yaphetsfang
2020/07/30
2.3K0
按钮式超链接代码
其中, 鼠标经过超链接的时候 设置的样式 。padding属性意在通过内边距微调来改变文字位置
全栈程序员站长
2022/09/18
1.4K0
按钮式超链接代码
HTML超链接使用代码
HTML 超链接(链接) HTML使用标签来设置超文本链接。在标签 中使用了href属性来描述链接的地址。 超链接可以是一个字,一个词,或者一组词,也可以是一幅图像,您可以点击这些内容来跳转到新的文档或者当前文档中的某个部分。 当您把鼠标指针移动到网页中的某个链接上时,箭头会变为一只小手。
全栈程序员站长
2022/09/14
2.4K0
如何运行ruby代码
第一种,ruby -e 在命令行中运行下面命令,-e的意思是,把后面的字符串当作脚本执行 ruby -e "print 'hello'" 使用irb交互控制台 在命令行输入irb hello worldxingoo@xingoo-Lenovo:~/workspace/RubyTest$ irb irb(main):001:0> p "hello" "hello" => "hello" irb(main):002:0> p "中文hello" "中文hello" => "中文hello" irb(main):
用户1154259
2018/01/17
1.4K0
如何运行PHP代码_运行php网站
相信不少初学者会遇到不知道如何运行php这个尴尬的问题,小白博主就来一次比较详细的介绍
全栈程序员站长
2022/11/11
10.3K0
如何运行PHP代码_运行php网站
pycharm如何执行代码_pycharm如何运行代码
首先在pycharm 中的python 文件,比如:test.py,右键点击 show in explore,会弹出test.py的所在的文件夹,如图所示:
全栈程序员站长
2022/09/27
1.2K0
pycharm如何执行代码_pycharm如何运行代码
【改进和增强Microsoft Office应用程序】ExtendOffice软件产品介绍
ExtendOffice Technology Inc.成立于2008年,是一家提供专业Microsoft Office加载项的主要公司。早在2004年,该公司的创始人就启动了Addintools.com来销售Microsoft Office的加载项。
51Component
2022/11/09
11.4K0
【改进和增强Microsoft Office应用程序】ExtendOffice软件产品介绍
C# 字节数组截取
C# 字节数组截取 如: byte[] bt = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 方法一 截取位数规则 1)截取2位长度的字节数组 用BitConverter.ToInt16 例如,从第2位开始截取2个字节则 BitConverter.ToInt16(bt,2);
全栈程序员站长
2022/08/12
3.6K0
图片中加入超链接html代码,html网页超链接代码 怎样用HTML代码在图片插入超链接…
HTML使用定义锚创造链接,可用于文本,图片,HTML元素…… 一,将文本作为超链接 文本 二,将图像作为超链接 三,将书签作为超链接 (在网页上显示的)书签文本 ① 在同文档中创建指向该锚的链接。 文本 ② 在其他页面创建指向该锚的链接。
全栈程序员站长
2022/09/18
5.3K0
图片中加入超链接html代码,html网页超链接代码 怎样用HTML代码在图片插入超链接…
(3)apache的安装,配置Apache以运行PHP代码
配置apache.以运行PHP程序 将刚才的网页1base.php放到Apache的htdocs文件中,并通过浏览器“浏览”
孙寅
2020/06/02
2.1K0
(3)apache的安装,配置Apache以运行PHP代码
如何在 Linux 中以脚本模式运行 Top
在 Centos8 中,我们执行本文中的命令。下面命令按照 CPU 使用率对数据进行排序,并打印命令中指定的前 20 行。
用户9236362
2021/11/30
2.5K0
删除或关闭Word中的超链接
最近使用的word老是会把一些文字内容或者标题转换成乱七八糟的格式,看的莫名其妙的,找了好久也不知道什么问题,后来一查才知道是因为这些文字包含超链接,word自动转换了。。。你说是不是莫名其妙。
marsggbo
2019/05/26
2.6K0
SplitContainer(拆分条控件)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/161095.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/09
2.3K0
C#截取指定字符串函数
本文转载:http://www.cnblogs.com/liufei88866/archive/2012/05/12/2497395.html
跟着阿笨一起玩NET
2018/09/19
1.2K0
c语言数组截取,C# 字符串按数组截取方法(C/S)
private void button1_Click(object sender, EventArgs e) {
全栈程序员站长
2022/06/30
2.2K0

相似问题

如何在单击超链接时运行php代码

10

C#陷阱单击带有阅读窗格的Outlook (超链接)

10

Outlook邮件-禁止在超链接上单击鼠标左键或阻止Outlook跟随单击的超链接

11

如何使用Outlook AddIn插入可单击的超链接?

17

Visual 2015 Outlook AddIn + Office 365单击以运行

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文