【问题标题】:Plot connects all data points instead of line绘图连接所有数据点而不是线
【发布时间】: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坐标!

标签: data-visualization matlab


【解决方案1】:

我认为您需要适当地对 x 和 y 值进行排序。 如果你这样做,情节看起来很好。请参阅下面的 sn-p 示例,了解如何执行此操作。

%plot ANN
scatter(x, y_n,'x');
hold on;
scatter(p_test,output,'o'); 
[ia,ib] = sort(p_test);
plot(ia,output(ib),'k-');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多