matlab knn不知道有没有会的大神请教一下

我是用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('预测值','实际值');

要读取的文件都是这样的形式

报错是这样的

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值