核岭回归(KRR)和高斯回归(GPR)都通过在内部采用“内核技巧”来学习目标函数。KRR学习使用相应核函数(该核函数对应于原始空间中的非线性函数)将目标函数映射到内核空间中的线性函数,然后基于具有岭正则化的均方误差损失来选择内核空间中的线性函数。GPR使用内核定义目标函数的先验分布的协方差,并使用观察到的训练数据来定义似然函数,基于贝叶斯定理,定义了目标函数的(高斯)后验分布,其均值用于预测。两者主要区别在于,GPR可以基于边际似然函数的梯度上升来选择核函数的超参数,而KRR需要对交叉验证的损失函数(均方误差损失)执行网格搜索。另一个不同之处是,GPR学习了目标函数的生成概率模型,因此可以提供有意义的置信区间和后验样本以及预测结果,而KRR仅提供预测结果。本示例使用了人工数据集,该数据集由正弦目标函数和强噪声组成。下图比较了基于ExpSineSquared内核的KRR和GPR的学习模型,该模型适合于学习周期性函数。核函数的超参数控制核函数的平滑度(l)和周期性(p),而且GPR通过核函数中的其他WhiteKernel组件和KRR的正则化参数alpha来显式地学习数据的噪声水平。该图显示两种方法都学习了目标函数的合理模型。GPR正确地将函数的周期性标识为2 * pi(6.28),而KRR选择了两倍的周期性4 * pi。除此之外,GPR在预测上提供了合理的置信范围,该预测对于KRR而言是不可用的。两种方法之间的主要区别是拟合和预测所需的时间:虽然拟合KRR原则上是快速的,但针对超参数优化的网格搜索会随着超参数的数量(“维数灾难”)成倍增长。GPR中基于梯度的参数优化不受此指数缩放的影响,因此在具有3维超参数空间的示例中,速度明显加快且预测时间相似, 但是,生成GPR预测分布的方差比仅预测平均值要花费更长的时间。

输出:

Time for KRR fitting: 3.275Time for GPR fitting: 0.074Time for KRR prediction: 0.054Time for GPR prediction: 0.058Time for GPR prediction with standard-deviation: 0.057
print(__doc__)

# 作者: Jan Hendrik Metzen # 许可证: BSD 3 clause

import time

import numpy as np

import matplotlib.pyplot as plt

from sklearn.kernel_ridge import KernelRidgefrom sklearn.model_selection import GridSearchCVfrom sklearn.gaussian_process import GaussianProcessRegressorfrom sklearn.gaussian_process.kernels import WhiteKernel, ExpSineSquared

rng = np.random.RandomState(0)

# 生成样本数据X = 15 * rng.rand(100, 1)y = np.sin(X).ravel()y += 3 * (0.5 - rng.rand(X.shape[0]))  # add noise

# 根据5-fold交叉验证对拟合KernelRidge进行参数选择param_grid = {"alpha": [1e0, 1e-1, 1e-2, 1e-3],              "kernel": [ExpSineSquared(l, p)                         for l in np.logspace(-2, 2, 10)                         for p in np.logspace(0, 2, 10)]}kr = GridSearchCV(KernelRidge(), param_grid=param_grid)stime = time.time()kr.fit(X, y)print("Time for KRR fitting: %.3f" % (time.time() - stime))

gp_kernel = ExpSineSquared(1.0, 5.0, periodicity_bounds=(1e-2, 1e1)) \    + WhiteKernel(1e-1)gpr = GaussianProcessRegressor(kernel=gp_kernel)stime = time.time()gpr.fit(X, y)print("Time for GPR fitting: %.3f" % (time.time() - stime))

# 使用kernel ridge进行预测X_plot = np.linspace(0, 20, 10000)[:, None]stime = time.time()y_kr = kr.predict(X_plot)print("Time for KRR prediction: %.3f" % (time.time() - stime))

# 使用高斯过程回归器进行预测stime = time.time()y_gpr = gpr.predict(X_plot, return_std=False)print("Time for GPR prediction: %.3f" % (time.time() - stime))

stime = time.time()y_gpr, y_std = gpr.predict(X_plot, return_std=True)print("Time for GPR prediction with standard-deviation: %.3f"      % (time.time() - stime))

# 绘制结果plt.figure(figsize=(10, 5))lw = 2plt.scatter(X, y, c='k', label='data')plt.plot(X_plot, np.sin(X_plot), color='navy', lw=lw, label='True')plt.plot(X_plot, y_kr, color='turquoise', lw=lw,         label='KRR (%s)' % kr.best_params_)plt.plot(X_plot, y_gpr, color='darkorange', lw=lw,         label='GPR (%s)' % gpr.kernel_)plt.fill_between(X_plot[:, 0], y_gpr - y_std, y_gpr + y_std, color='darkorange',                 alpha=0.2)plt.xlabel('data')plt.ylabel('target')plt.xlim(0, 20)plt.ylim(-4, 4)plt.title('GPR versus Kernel Ridge')plt.legend(loc="best",  scatterpoints=1, prop={'size': 8})plt.show()

脚本的总运行时间: ( 0 分 3.858 秒)

估计的内存使用量: 8 MB下载python源代码: plot_compare_gpr_krr.py下载Jupyter notebook源代码: plot_compare_gpr_krr.ipynb由Sphinx-Gallery生成的画廊欢迎大家和我一起沿着scikit-learn文档这条路线,一起巩固机器学习算法基础。(添加微信:mthler,备注:sklearn学习,一起进【sklearn机器学习进步群】开启打怪升级的学习之旅。)

高斯拟合 vc++代码_使用python+sklearn实现核岭回归和高斯回归的比较相关推荐

  1. python 拟合sigmoid曲线_使用python+sklearn实现概率校准曲线

    注意:单击此处https://urlify.cn/muQBjy下载完整的示例代码,或通过Binder在浏览器中运行此示例 在进行分类时,人们经常不仅要预测分类标签,还要预测相关的概率.预测概率可以让人 ...

  2. 高斯拟合 vc++代码_NMA2020W1 极大似然法模型拟合与bootstrap

    常见的线性模型: 求解方式有两种,一种是计算均方误差(MSE),使得均方误差最小. 图1 找到梯度为零的点即可. 而之前一直比较模糊的最大似然法也比较清楚了.一般线性模型,我们假定误差项是符合高斯分布 ...

  3. python画pr曲线代码_利用Python中的numpy包实现PR曲线和ROC曲线的计算

    闲来无事,边理解PR曲线和ROC曲线,边写了一下计算两个指标的代码.在 python 环境下,sklearn里有现成的函数计算ROC曲线坐标点,这里为了深入理解这两个指标,写代码的时候只用到numpy ...

  4. python one hot编码_对python sklearn one-hot编码详解

    one-hot编码的作用 使用one-hot编码,将离散特征的取值扩展到了欧式空间,离散特征的某个取值就对应欧式空间的某个点 将离散特征通过one-hot编码映射到欧式空间,是因为,在回归,分类,聚类 ...

  5. python三维重建代码_基于Python的三维重建开源代码

    [实例简介] 基于Python的三维重建开源代码,包括特征提取,SFM,PMVS以及CMVS等相关功能! [实例截图] [核心代码] sfm-bundler(python) └── sfm-bundl ...

  6. python pos函数_使用python+sklearn实现特征提取

    sklearn.feature_extraction模块可用于以机器学习算法支持的格式从原始数据集(如文本和图像)中提取特征.**注意:**特征提取与特征选择有很大不同:前者是将任意数据(例如文本或图 ...

  7. python 密度聚类 使用_使用python+sklearn实现硬币图像上的结构化Ward层次聚类演示...

    注意:单击此处https://urlify.cn/EFRn6b下载完整的示例代码,或通过Binder在浏览器中运行此示例使用Ward层次聚类计算二维图像的分割,由于聚类在空间上受到了限制,所以每个分割 ...

  8. sklearn实现lda模型_使用python+sklearn实现模型复杂性的影响

    本示例演示了模型复杂性是如何影响预测精度和计算性能的.数据集是用于回归(或者分类)的波士顿住房(Boston Housing)数据集(或者20 Newsgroups).对于每一类模型,我们通过选择相关 ...

  9. python 聚类_使用python+sklearn实现聚类性能评估中随机分配对聚类度量值的影响

    注意:单击此处https://urlify.cn/3iAzUr下载完整的示例代码,或通过Binder在浏览器中运行此示例 下图说明了聚类数量和样本数量对各种聚类性能评估度量指标的影响.未调整的度量指标 ...

最新文章

  1. 网上报名的一些感慨.
  2. android愤怒小鸟游戏、自定义View、掌上餐厅App、OpenGL自定义气泡、抖音电影滤镜效果等源码...
  3. 一个简单计算器demo 拥有记忆和记忆清除功能
  4. java代码发送http请求时DnsResolver使用问题
  5. matlab二分类svm高斯核 实例,16 SVM - 代码案例三 - 不同SVM核函数效果比较
  6. 科沃斯扫地机器人阿尔法_科沃斯(Ecovacs)阿尔法地宝简单开箱
  7. 从DevOps到Cloud Native,应用上云姿势全解锁 1
  8. vb读取mysql数据库数据_VB读取ORACLE数据库的两种方法
  9. V360i手机相关软件全面介绍(附下载)
  10. sp485ee 芯片调试,RE DE 一直上拉故障
  11. 社会语义网络图用什么软件绘制_GitMind:免费在线思维导图软件
  12. 计算机桌面最下面的横条怎么去掉,win7系统桌面出现横条如何去除?桌面出现横条去除方法...
  13. A. Rainbow Dash, Fluttershy and Chess Coloring(思维) Codeforces Round #662 (Div. 2)
  14. [置顶] 得失寸心知
  15. 树莓派11bullseye换源/Opencv安装
  16. 5个省,7大 “5G+智能电网” 落地应用案例!
  17. elasticsearch 怎么删除过期的数据
  18. linux实验手册汇总,Linux实验手册汇总(226页)-原创力文档
  19. Android之短信验证码
  20. 解决页面报错 500-内部服务器错误

热门文章

  1. Eclipse安装最新SVN插件方法
  2. Linux的基本命令符
  3. Bootstrap3代码模板
  4. postgresql 创建用户_PostgreSQL创建用户和修改用户密码
  5. 计算机科学与技术专题,专题四 计算机科学与应用技术.ppt
  6. 用matlab设计滤波器实验报告,数字信号出来实验报告--matlab滤波器设计
  7. Katalon Recorder录制脚本
  8. 两个时间的差值Java,Java如何找到两个时间之间的差值?
  9. ubuntu 安装 guetzli
  10. ORACLE使用中的常见 实用的问题