我有一个训练集,其输入和输出如下:
Input:0.832 64.6430.818 78.8431.776 45.0490.597 88.3021.412 63.4581.468 49.5351.985 33.3872.073 30.2791.431 55.2311.116 68.5211.617 44.3622.159 66.512Output:0 0 10 0 10 1 00 0 11 0 00 0 10 0 10 1 01 0 01 0 00 1 00 1 0
我需要实现一个线性层神经网络,以便在MATLAB中最好地表示该数据集。在MATLAB中实现此算法的步骤是什么?
目标输出是:对于对应输入所属的特定类别输出“1”,对于其余2个输出输出“0”。
回答:
考虑使用一个隐藏层(包含3个节点)的前馈ANN进行训练的示例。由于你的数据输出点似乎比输入点多,我使用了一个演示数据集,但思路是一样的:
%# load sample datalaod simpleclass_datasetinput = simpleclassInputs; %# 2x1000, 2-dimensional pointsoutput = simpleclassTargets; %# 4x1000, 4 classes%# split data into training/testing setstrainInd = 1:500;testInd = 501:1000;%# create ANN and initialize network weightsnet = newpr(input, output, 3);net = init(net);net.trainParam.epochs = 25; %# max number of iterations%# learn net weights from training datanet = train(net, input(:,trainInd), output(:,trainInd));%# predict output of net on testing datapred = sim(net, input(:,testInd));%# classification confusion matrix[err,cm] = confusion(output(:,testInd), pred);
输出是:
err = 0.075075cm = 81 0 0 0 0 82 0 0 9 0 52 16 0 0 0 93
显然,你需要访问神经网络工具箱。