我在python中只使用numpy实现了高斯回归过程。我的目的是通过实施来理解它。可能对你有帮助。在import numpy as np

from matplotlib import pyplot as plt

import seaborn as sns

sns.set(color_codes=True)

%matplotlib inline

class GP(object):

@classmethod

def kernel_bell_shape(cls, x, y, delta=1.0):

return np.exp(-1/2.0 * np.power(x - y, 2) / delta)

@classmethod

def kernel_laplacian(cls, x, y, delta=1):

return np.exp(-1/2.0 * np.abs(x - y) / delta)

@classmethod

def generate_kernel(cls, kernel, delta=1):

def wrapper(*args, **kwargs):

kwargs.update({"delta": delta})

return kernel(*args, **kwargs)

return wrapper

def __init__(self, x, y, cov_f=None, R=0):

super().__init__()

self.x = x

self.y = y

self.N = len(self.x)

self.R = R

self.sigma = []

self.mean = []

self.cov_f = cov_f if cov_f else self.kernel_bell_shape

self.setup_sigma()

@classmethod

def calculate_sigma(cls, x, cov_f, R=0):

N = len(x)

sigma = np.ones((N, N))

for i in range(N):

for j in range(i+1, N):

cov = cov_f(x[i], x[j])

sigma[i][j] = cov

sigma[j][i] = cov

sigma = sigma + R * np.eye(N)

return sigma

def setup_sigma(self):

self.sigma = self.calculate_sigma(self.x, self.cov_f, self.R)

def predict(self, x):

cov = 1 + self.R * self.cov_f(x, x)

sigma_1_2 = np.zeros((self.N, 1))

for i in range(self.N):

sigma_1_2[i] = self.cov_f(self.x[i], x)

# SIGMA_1_2 * SIGMA_1_1.I * (Y.T -M)

# M IS ZERO

m_expt = (sigma_1_2.T * np.mat(self.sigma).I) * np.mat(self.y).T

# sigma_expt = cov - (sigma_1_2.T * np.mat(self.sigma).I) * sigma_1_2

sigma_expt = cov + self.R - (sigma_1_2.T * np.mat(self.sigma).I) * sigma_1_2

return m_expt, sigma_expt

@staticmethod

def get_probability(sigma, y, R):

multiplier = np.power(np.linalg.det(2 * np.pi * sigma), -0.5)

return multiplier * np.exp(

(-0.5) * (np.mat(y) * np.dot(np.mat(sigma).I, y).T))

def optimize(self, R_list, B_list):

def cov_f_proxy(delta, f):

def wrapper(*args, **kwargs):

kwargs.update({"delta": delta})

return f(*args, **kwargs)

return wrapper

best = (0, 0, 0)

history = []

for r in R_list:

best_beta = (0, 0)

for b in B_list:

sigma = gaus.calculate_sigma(self.x, cov_f_proxy(b, self.cov_f), r)

marginal = b* float(self.get_probability(sigma, self.y, r))

if marginal > best_beta[0]:

best_beta = (marginal, b)

history.append((best_beta[0], r, best_beta[1]))

return sorted(history)[-1], np.mat(history)

现在您可以按如下方式尝试:

^{pr2}$

正则化参数的影响def create_case(kernel, R=0):

x = np.array([-2, -1, 0, 3.5, 4]);

y = np.array([4.1, 0.9, 2, 12.3, 15.8])

gaus = GP(x, y, kernel, R=R)

x_guess = np.linspace(-4, 6, 400)

y_pred = np.vectorize(gaus.predict)(x_guess)

plt.scatter(x, y, c="black")

plt.plot(x_guess, y_pred[0], c="b")

plt.plot(x_guess, y_pred[0] - np.sqrt(y_pred[1]) * 3, "r:")

plt.plot(x_guess, y_pred[0] + np.sqrt(y_pred[1]) * 3, "r:")

plt.figure(figsize=(16, 16))

for i, r in enumerate([0.0001, 0.03, 0.09, 0.8, 1.5, 5.0]):

plt.subplot("32{}".format(i+1))

plt.title("kernel={}, delta={}, beta={}".format("bell shape", 1, r))

create_case(

GP.generate_kernel(GP.kernel_bell_shape, delta=1), R=r)

plt.figure(figsize=(16, 16))

for i, d in enumerate([0.05, 0.5, 1, 3.2, 5.0, 7.0]):

plt.subplot("32{}".format(i+1))

plt.title("kernel={}, delta={}, beta={}".format("kernel_laplacian", d, 1))

create_case(

GP.generate_kernel(GP.kernel_bell_shape, delta=d), R=0)

高斯过程回归python_高斯过程回归在pythony中的实现(n个样本,n个目标)相关推荐

  1. 贝叶斯岭回归(BayesianRidge)、自动关联决策回归、高斯过程、核函数、及高斯回归、高斯过程分类

    贝叶斯岭回归(BayesianRidge).自动关联决策回归.高斯过程.核函数.及高斯回归.高斯过程分类 目录

  2. 第五章 逻辑回归模型在评分卡开发中的应用

    逻辑回归模型在评分卡开发中的应用 课程简介:在分类场景中,逻辑回归模型是常用的一类算法.它具有结构简单.可解释性强.输出结果是"软分类"的特点.评分模型多采用这类算法.同时逻辑回归 ...

  3. 案例 | 基于JMP Pro的Lasso及岭回归在水稻全基因组预测中的应用

    全基因组选择是21世纪动植物育种的一种重要的选择策略,其核心就是全基因组预测,即基于分布在整个基因组上的多样性分子标记来对育种值进行预测,为个体的选择提供依据.但目前提出的大多数全基因组预测方法都涉及 ...

  4. python逻辑回归识别猫(持续更新中)

    逻辑回归 简单来说, 逻辑回归(Logistic Regression)是一种用于解决二分类(0 or 1)问题的机器学习方法,用于估计某种事物的可能性.比如某用户购买某商品的可能性,某病人患有某种疾 ...

  5. R语言中的岭回归、套索回归、主成分回归:线性模型选择和正则化

    概述和定义 在本文中,我们将考虑一些线性模型的替代拟合方法,除了通常的  普通最小二乘法.这些替代方法有时可以提供更好的预测准确性和模型可解释性.最近我们被客户要求撰写关于模型选择的研究报告,包括一些 ...

  6. DataScience:基于GiveMeSomeCredit数据集利用特征工程处理、逻辑回归LoR算法实现构建风控中的金融评分卡模型

    DataScience:基于GiveMeSomeCredit数据集利用特征工程处理.逻辑回归LoR算法实现构建风控中的金融评分卡模型 目录 基于GiveMeSomeCredit数据集利用特征工程处理. ...

  7. 简单粗暴理解与实现机器学习之逻辑回归:逻辑回归介绍、应用场景、原理、损失以及优化...

    作者 | 汪雯琦 责编 | Carol 来源 | CSDN 博客 出品 | AI科技大本营(ID:rgznai100) 学习目标 知道逻辑回归的损失函数 知道逻辑回归的优化方法 知道sigmoid函数 ...

  8. 一文读懂线性回归、岭回归和Lasso回归

    (图片由AI科技大本营付费下载自视觉中国) 作者 | 文杰 编辑 | yuquanle 本文介绍线性回归模型,从梯度下降和最小二乘的角度来求解线性回归问题,以概率的方式解释了线性回归为什么采用平方损失 ...

  9. 岭回归与Lasso回归

    线性回归的一般形式 过拟合问题及其解决方法 问题:以下面一张图片展示过拟合问题 解决方法:(1):丢弃一些对我们最终预测结果影响不大的特征,具体哪些特征需要丢弃可以通过PCA算法来实现:(2):使用正 ...

  10. 线性回归——lasso回归和岭回归(ridge regression)

    目录 线性回归--最小二乘 Lasso回归和岭回归 为什么 lasso 更容易使部分权重变为 0 而 ridge 不行? References 线性回归很简单,用线性函数拟合数据,用 mean squ ...

最新文章

  1. iOS开发网络篇—GET请求和POST请求
  2. “甜橙金融杯”数据建模大赛发布,8万重金寻找大数据金融人才!
  3. CSS基础选择器(选择器的优先级),CSS样式块( 长度/颜色/显示方式/文本样式),盒模型组成,盒模型-block,盒模型布局...
  4. 【今日CV 视觉论文速览】Wed, 6 Feb 2019
  5. 使用Forms验证存储用户自定义信息
  6. 1956年五元钱币市值多少?
  7. mysql导入 内存溢出_Solr Dataimporthandler 导入MySQL 内存溢出。
  8. 测试项目的makefile
  9. 不同调制方式性能优劣指标
  10. 一元线性回归及案例(Python)
  11. 赚了20亿美元GandCrab勒索病毒家族的故事
  12. github 发布静态页面
  13. java 菜刀_jsp一句话木马菜刀
  14. 【知识分享】10M宽带非10M
  15. 第05章 深度卷积神经网络模型
  16. 计算机不上电维修流程,电脑主板不加电的维修流程
  17. 一些因吹斯汀的题目记录
  18. 如何在SMC官网下载EX260阀岛的GSD文件
  19. ESP32接入腾讯云物联网开发平台
  20. kerberos使用详解

热门文章

  1. Android os 4.4.4 魅族,魅族Mx3刷机包 Android 4.4.4 稳定版Flyme OS 3.7.3A 流畅顺滑体验
  2. “好工作”的最佳标准:坚持理想,顺便赚钱——一个媒体人的心路历程
  3. SVN回滚到某一版本
  4. 面向接口编程的一些总结
  5. 一款非常便捷好用的mac办公工具:WPS Office 2020
  6. 微信公众号开发者模式入门
  7. lora网关采集温室大棚温湿度数据案例
  8. 使用PHP+LibreOffice实现word转html的功能
  9. 《人工智能及其应用》重点回顾
  10. C#开根号函数:math.pow()函数