Matlab 如何使用GRNN预测变量的值?

Matlab 如何使用GRNN预测变量的值?,matlab,time-series,forecasting,Matlab,Time Series,Forecasting,我有一些固定采样时间的数据。我将这些数据分为训练集和测试集,然后用训练集训练GRNN,得到了很好的结果。到目前为止,一切顺利。当我尝试预测测试集的值时,它不起作用(它给我一条水平线;总是相同的预测)。我能做些什么使它工作 编辑: 编辑2: 这是。@PavelOganesyan,我刚刚编辑了这篇文章。@Ins我想你需要发布你的dta.csv来调试它。有可能你只是没有将你的价差设定得足够大或是某些特定的东西。不过实现似乎是正确的。@例如,使用您的代码和随机数据,我得到的是RMSE_TRAIN=0.2

我有一些固定采样时间的数据。我将这些数据分为训练集和测试集,然后用训练集训练GRNN,得到了很好的结果。到目前为止,一切顺利。当我尝试预测测试集的值时,它不起作用(它给我一条水平线;总是相同的预测)。我能做些什么使它工作

编辑:

编辑2:


这是。

@PavelOganesyan,我刚刚编辑了这篇文章。@Ins我想你需要发布你的dta.csv来调试它。有可能你只是没有将你的价差设定得足够大或是某些特定的东西。不过实现似乎是正确的。@例如,使用您的代码和随机数据,我得到的是
RMSE_TRAIN=0.2641
STD_TRAIN=0.0471
@kris,这里是数据的链接
load ('dta.csv');

tam = size(dta);

data.X = (1:tam(1))'; %'
data.y = dta(:,end);

lim = round(tam(1)*0.7);

train.X = data.X(1:lim,:);
train.y = data.y(1:lim);

test.X = data.X(lim+1:end,:);
test.y = data.y(lim+1:end);


spread = 1.0;
net = newgrnn(train.X',train.y',spread);


pred = sim(net,train.X');
RMSE_TRAIN = sqrt(mean((train.y'-pred).^2))
STD_TRAIN = std(sqrt((train.y'-pred).^2))


pred = sim(net,test.X' );
RMSE_TEST = sqrt(mean((test.y'-pred).^2))
STD_TEST = std(sqrt((test.y'-pred).^2))