我是用knn来预测标普500的走向
然后现在卡bug了
不知道怎么解决,希望大神看到帮帮,太谢谢了。
clear ;clc;
close all;
format long g;
k=5;
dimension=5;
% 反转数据,使日期由远及近
data_train=flipud(xlsread('trainData.xlsx'));
memo=[];
for i=1:size(data_train,1)-dimension+1
% 特征序列与后一项值
curr=data_train(i:i+dimension-1);
memo=[memo,curr];
end
data_test=xlsread('forecast.xlsx');
res=[];
for i=1:size(data_test,1)-dimension+1
% 取出要预测的特征序列
prev=data_test(i:i+dimension-2);
x=(prev).';
sorce=[];
for j=1:size(memo,2)
y=memo(1:dimension-1,j:j).';
% 计算要预测的特征序列和搜索空间的每一个特征序列的欧氏距离
sorce=[sorce;[dist(x,y'),memo(dimension:dimension,j:j)]];
end
% 排序
sorce=sortrows(sorce);
% topK取平均
fcs=mean(sorce(1:k,2:2));
res=[res;fc];
end
mae=mean(abs(res - data_test(dimension:end)));
mse=sqrt(mean((res - data_test(dimension:end)).^2));
mape=mean(abs((data_test(dimension:end) - res)./data_test(dimension:end)));
disp('mae');
disp(mae);
disp('mse');
disp(mse);
disp('mape');
disp(mape);
plot(res,'r');
hold on
plot(data_test(dimension:end),'b');
legend('预测值','实际值');
要读取的文件都是这样的形式
报错是这样的