高斯过程回归预测 C++代码实现

主函数部分:pre_position是训练集x,pre_gradient是训练集y
Gaussian_process_Regression(pre_position, pre_gradient, i)的参数是,训练集x,训练集y,i是训练好后要预测的数值。
注意:因为我程序项目需求,pre_position与pre_gradient在Gaussian_process_Regression函数里还进行了插值,不需要的可以把我函数里的插值部分去掉即可

#include <iostream>
#include <vector>
#include "Gaussian_fuc_match.h"
#include "Regression.h"
using namespace std;
using namespace Eigen;int main()
{vector<int> pre_position = { 1583,1584,1585,1586,1587,1588,1589 };vector<int> pre_gradient = { 2,23,114,246,245,114,23 };double predict_position=1583;double result;for (float i = predict_position; i < 1589; i += 0.5){result= Gaussian_process_Regression(pre_position, pre_gradient, i);cout << result << "  ";}cout << endl;}

Gaussian_process_Regression函数体
注意:Interpolation函数是插值函数,可以简单理解为我的pre_position与pre_gradient数据太少,我又插了几个点(按高斯函数插的,如果大家预测的曲线不是高斯函数请不要用这个函数),具体不需要这个插值的方法是删掉Interpolation(pre_position, pre_gradient, position, gradient);语句,然后把pre_position与pre_gradient的值分别赋给position = {}, gradient = {}即可
具体更改方法:

//Interpolation(pre_position, pre_gradient, position, gradient);
position=pre_position;
gradient=pre_gradient;
template<typename T>
double Gaussian_process_Regression(vector<T> pre_position, vector<T> pre_gradient,double predict_position)
{vector<double> position = {}, gradient = {};Interpolation(pre_position, pre_gradient, position, gradient);MatrixXd  K(position.size(), position.size());MatrixXd  K_s(1, position.size());MatrixXd  Y(position.size(), 1);MatrixXd  result(1, 1);//给定超参数double sigema_f = 1.27, l = 1,sigema_n = 0.3;double K_ss = pow(sigema_f, 2) + pow(sigema_n, 2);//初始化各个矩阵for (int i = 0; i < position.size(); i++){for (int j = 0; j < position.size(); j++){  double rectify;rectify = (i == j) ? pow(sigema_n, 2) : 0;K(i, j) = pow(sigema_f, 2) * exp(-pow(position[i] - position[j], 2) / (2 * pow(l, 2))) + rectify;}}for (int i = 0; i < position.size(); i++){K_s(0,i)= pow(sigema_f, 2) * exp(-pow(predict_position - position[i], 2) / (2 * pow(l, 2))) ;}for (int i = 0; i < gradient.size(); i++){Y(i, 0) = gradient[i];}result = K_s * K.inverse() * Y;return result(0,0);
}

插值部分也给出来吧,,万一有人需要呢

template<typename T>
void Interpolation(vector<T> pre_position, vector<T> pre_gradient, vector<double>& position, vector<double>& gradient)
{vector<T> x = {}, y = {};vector<double> result = {};double gr;for (float i = 0; i < pre_position.size() - 2; i =i+ 2){x = { pre_position[i],pre_position[i + 1],pre_position[i + 2] };y = { pre_gradient[i],pre_gradient[i + 1],pre_gradient[i + 2] };result = Gaussian_f(x, y);for (float j = 0; j < 2; j =j+ 0.01){gr = exp(result[0] * pow(pre_position[i] + j, 2) + result[1] * (pre_position[i] + j) + result[2]);position.push_back(pre_position[i] + j);gradient.push_back(gr);}}
}
//将进行拟合的x,y输入,输出点为高斯函数导数为0的点
template<typename T>
vector<double> Gaussian_f(vector<T> x, vector<T> y)
{Matrix<double, 3, 3>  X;Matrix<double, 3, 1>  Z;Matrix<double, 3, 1>  B;double a, b, c;//高斯公式参数Z << log(y[0]),log(y[1]),log(y[2]);X << 1, x[0], pow(x[0], 2),1, x[1], pow(x[1], 2),1, x[2], pow(x[2], 2);B = X.inverse() * Z;a = B(2, 0);b = B(1, 0);c = B(0, 0);vector<double> result = { a,b,c };return result;
}

结果:预测1583 1583.5 1584…1588.5的结果

Eigen库的安装和配置
https://blog.csdn.net/j_d_c/article/details/78899538?spm=1001.2014.3001.5506

高斯过程回归预测 C++代码实现相关推荐

  1. DL之DNN:基于自定义数据集利用深度神经网络(输入层(10个unit)→2个隐藏层(10个unit)→输出层1个unit)实现回归预测实现代码

    DL之DNN:基于自定义数据集利用深度神经网络(输入层(10个unit)→2个隐藏层(10个unit)→输出层1个unit)实现回归预测实现代码 目录 基于自定义数据集利用深度神经网络(输入层(10个 ...

  2. ACO蚁群算法优化BP神经网络(ACO-BPNN)回归预测MATLAB代码(有优化前后的对比)

    ACO蚁群算法优化BP神经网络(ACO-BPNN)回归预测MATLAB代码(有优化前后的对比) 代码注释清楚. main为运行主程序,可以读取本地EXCEL数据. 很方便,容易上手. (以电厂运行数据 ...

  3. 基于灰狼算法优化的lssvm回归预测-附代码

    基于灰狼算法优化的lssvm回归预测 - 附代码 文章目录 基于灰狼算法优化的lssvm回归预测 - 附代码 1.数据集 2.lssvm模型 3.基于灰狼算法优化的LSSVM 4.测试结果 5.Mat ...

  4. PCR主成分回归预测MATLAB代码 代码注释清楚。 main为主程序,读取EXCEL数据

    PCR主成分回归预测MATLAB代码 代码注释清楚. main为主程序,读取EXCEL数据,也可以换自己数据集. 很方便,容易上手. ID:9624654486820873总有刁民膜拜朕

  5. PSO粒子群算法优化BP神经网络(PSO-BPNN)回归预测MATLAB代码

    PSO粒子群算法优化BP神经网络(PSO-BPNN)回归预测MATLAB代码(有优化前后的对比) 代码注释清楚. main为运行主程序,可以读取本地EXCEL数据,也可以加载本地数据.mat,使用换自 ...

  6. 基于PCA主成分分析的BP神经网络回归预测MATLAB代码

    基于PCA主成分分析的BP神经网络回归预测MATLAB代码 代码注释清楚. 先对数据集进行主成分分析,自主根据贡献率选择主成分:同时计算KMO验证值:用PCA以后数据进行BP神经网络回归预测. 可以读 ...

  7. SSA麻雀算法优化BP神经网络(SSA-BPNN)回归预测MATLAB代码(有优化前后的对比

    SSA麻雀算法优化BP神经网络(SSA-BPNN)回归预测MATLAB代码(有优化前后的对比) 代码注释清楚. main为运行主程序,可以读取本地EXCEL数据. 很方便,容易上手. (以电厂运行数据 ...

  8. PCR主成分回归预测MATLAB代码 代码注释清楚。 main为主程序,读取EXCEL数据,也可以换自己数据集

    PCR主成分回归预测MATLAB代码 代码注释清楚. main为主程序,读取EXCEL数据,也可以换自己数据集. 很方便,容易上手. ID:6924654486820873总有刁民膜拜朕

  9. 基于樽海鞘算法的极限学习机(ELM)回归预测-附代码

    基于樽海鞘算法的极限学习机(ELM)回归预测 文章目录 基于樽海鞘算法的极限学习机(ELM)回归预测 1.极限学习机原理概述 2.ELM学习算法 3.回归问题数据处理 4.基于樽海鞘算法优化的ELM ...

  10. 基于麻雀搜索算法优化的支持向量机回归预测-附代码

    基于麻雀搜索算法优化的支持向量机预测及其MATLAB代码实现 文章目录 基于麻雀搜索算法优化的支持向量机预测及其MATLAB代码实现 1. 基于麻雀搜索算法优化的支持向量机预测简介 1.1 支持向量机 ...

最新文章

  1. 基于.NET的图表控件解决方案
  2. VULKAN学习笔记-inter教学四篇
  3. Android系统(244)---Zygote进程的启动流程
  4. 清晰架构的 Go 微服务: 程序容器
  5. 未来已来?揭开量子计算机的神秘面纱
  6. Anaconda 在线安装第三方库jieba
  7. Java猜数字小游戏
  8. 圆通快递单号yt开头_圆通快递单号yt开头怎么查不到 点查询即可如果是圆通快递可以...
  9. 准备计算机二级c语言需要多久,计算机二级自学需要准备多久
  10. python字典生成器
  11. bingo update1
  12. MKMapView 自定义大头针
  13. dedecms织梦搬家数据库导入失败怎么办?
  14. sq-接口项目-外卖系统
  15. python实现井字棋
  16. Blazor University (47)依赖注入 —— Singleton 依赖
  17. DOCKER里面PYTORCH关于GLOO地址声明 NCCL地址声明
  18. SpringData入门
  19. 软件需求管理用例方法 pdf_一卡通管理软件功能需求
  20. 初学ABB机器人与库卡机器人时,常常碰到的问答集锦

热门文章

  1. 数学基础(1)线性代数总结
  2. 马尔科夫matlab程序,马尔科夫链matlab代码
  3. esp32语音播放天气预报
  4. DCDC布局布线总结
  5. APP跳转H5、微信小程序与微信小程序之间互跳
  6. 利用soapUI获取freemarker的ftl文件模板
  7. 在密码输入框内按回车就登陆的功能
  8. 自学C语言和C++,有什么好书推荐?
  9. 教务管理系统设计与实现
  10. 高项_第一章信息化和信息系统