用于类的Matlab神经网络 - 看不见的数据

时间:2014-12-21 16:44:45

标签: matlab neural-network

假设我创建了一个神经网络来分离类:

X1; %Some data in Class 1 100x2
X2; %Some data in Class 2 100x2

classInput = [X1;X2];
negative = zeros(N, 1);
positive = ones(N,1);
classTarget = [positive negative; negative positive]; 

net = feedforwardnet(20);
net = configure(net, classInput, classTarget);
net = train(net, classInput, classTarget);
%output of training data
output = net(classInput);

我可以绘制类,并将它们正确分开:

figure();
hold on
style = {'ro' 'bx'};

for i=1:(2*N)
    plot(classInput(i,1),classInput(i,2), style{round(output(i,1))+1});
end

但是,如何将刚刚接受过培训的网络应用于看不见的数据?必须有一个由网络生成的模型,可以应用于新数据吗?

编辑:使用sim:

训练网络后,如果我在训练数据上使用sim:

[Z,Xf,Af] = sim(net,classInput);

结果如预期。但这只适用于输入大小相同的情况。例如,如果我想评估单个数据点:

[Z1,Xf,Af] = sim(net,[1,2]);

尺寸(Z)==尺寸(Z1),但这显然没有意义?当然,我可以评估一个数据点吗?

1 个答案:

答案 0 :(得分:1)

我是OP,

我假设输入矩阵的行是数据样本而列是"类别",这是另一种方式。在将矩阵输入到train()函数之前转置矩阵可以解决这个问题。