【MATLAB第99期】#源码分享 | 基于MATLAB的SHEPard模型多输入单输出回归预测模型
Shepard模型(简称SP模型)就是一种直观的、可操作的相似预测法,常用于插值。相似预测法基本原理按照相似原因产生相似结果的原则,从历史样本中集中找出与现在的最相似的一个或几个样本作为预测结果,是一种非线性预测方法。
一、数据
%% 清空环境变量
warning off % 关闭报警信息
close all % 关闭开启的图窗
clear % 清空变量
clc % 清空命令行
%rng(30)
%% 导入数据
res = xlsread('数据集.xlsx');%% 划分训练集和测试集
temp = randperm(103);
%temp = 1:103;
P_train = res(temp(1: 80), 1: 7)';
T_train = res(temp(1: 80), 8)';
M = size(P_train, 2);P_test = res(temp(81: end), 1: 7)';
T_test = res(temp(81: end), 8)';
N = size(P_test, 2);%% 数据归一化
[p_train, ps_input] = mapminmax(P_train, 0, 1);
p_test = mapminmax('apply', P_test, ps_input);[t_train, ps_output] = mapminmax(T_train, 0, 1);
t_test = mapminmax('apply', T_test, ps_output);
p_train=p_train';t_train=t_train';p_test=p_test';
二、参数说明
SHEPFit函数:
[srgtSRGT srgtSTT]=SHEPFit(srgtOPT)
srgtSRGT是包含以下字段的代理结构:
*P:训练输入。
*T:训练输出。
*NbPoints:数据集中的点数。
*NbVariables:输入变量的数量。
*SHEP_Beta:局部拟合系数。
*SHEP_Radii:包含每个的影响半径的数组指向
srgtSTT是包含以下字段的状态结构:
*SHEP_Error:
0,代表未遇到错误。
1,代表N相对于M太小。
2,代表任何最小二乘问题是秩亏的。
3,代表IRLS子程序返回错误。
SHEPOPT函数:
srgtOPT = SHEPOPT(p_train, t_train,'LinearShepard');
默认为 ‘LinearShepard’,可替代为’string '、 ‘Ripple’
三、运行结果
训练集数据的R2为:1
测试集数据的R2为:0.93832
训练集数据的MAE为:4.885e-16
测试集数据的MAE为:1.3938
训练集数据的MBE为:-4.885e-16
测试集数据的MBE为:0.064734
四、代码获取
1.阅读首页置顶文章
2.关注CSDN
3.根据自动回复消息,回复“99期”以及相应指令,即可获取对应下载方式。