【发布时间】:2016-02-21 06:26:02
【问题描述】:
我正在训练 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 格式错误,但我不知道如何正确操作。
谢谢。
【问题讨论】:
-
提示:如果您首先按 x 值对点进行排序,线图会是什么样子?
-
喜欢这个?
plot(sort(p_test),output);?不,我希望这条线与我的第一个示例中的点相同。而事实并非如此。 -
您需要对点进行排序,而不仅仅是它们的x坐标!