我正在训练ANN,我想绘制结果 - 所以我可以看看模型是否正确预测数据:
我的代码:
%-----DATA SET-----
x=0:0.08:6*pi;
y=sin(x);
%create noise
a = -.3; b = .3;
noise = a + (b-a) * rand(1,length(y));
%add noise
y_n=y+noise;
%-----SPLIT INTO TRAIN AND TEST-----
p=x;t=y_n;
num = size(p,2);
split_point = round(num*0.7);
seq = randperm(num);
p_train = p(:,seq(1:split_point));
t_train = t(seq(1:split_point));
p_test = p(:,seq(split_point+1:end));
t_test = t(seq(split_point+1:end));
%-----ANN-----
net=newff([0 6*pi],[5 1],{'tansig','purelin'},'traingd','learnp');
net.trainParam.epochs=500; %number of epochs
net=train(net,p_train,t_train); % batch training
output=sim(net,p_test);
%plot ANN
scatter(x, y_n,'x');
hold on;
scatter(p_test,output,'o');
但我希望一条流畅的线。如果我plot(p_test,output)
所有数据点都像这样连接:
我想我的格式错误output
,但我无法弄清楚如何正确地做到这一点。
谢谢。
答案 0 :(得分:2)
我认为您需要适当地对x和y值进行排序。 如果你这样做,情节看起来很好。有关如何执行此操作的示例,请参阅以下代码段。
%plot ANN
scatter(x, y_n,'x');
hold on;
scatter(p_test,output,'o');
[ia,ib] = sort(p_test);
plot(ia,output(ib),'k-');