2

I have a training set that has input and outputs in this way:

Input:
0.832 64.643
0.818 78.843
1.776 45.049
0.597 88.302
1.412 63.458
1.468 49.535
1.985 33.387
2.073 30.279
1.431 55.231
1.116 68.521
1.617 44.362
2.159 66.512

Output:
0 0 1
0 0 1
0 1 0
0 0 1
0 0 1
1 0 0
0 0 1
1 0 0
1 0 0
0 0 1
0 0 1
0 1 0
1 0 0
1 0 0
0 1 0
0 1 0

I need to implement one linear layer neural network that can represent the data set best in MATLAB. What would be the algorithm to do it in MATLAB?

The target output is "1 for a particular class that the corresponding input belongs to and "0 for the remaining 2 outputs.

2
  • what choices u r talking about? Commented Aug 7, 2010 at 6:18
  • Why not use ANN Toolbox? Commented Mar 5, 2016 at 10:36

1 Answer 1

8

Consider this example of training a feed-forward ANN of one hidden layer (with 3 nodes). Since your data seems to have more output points than input, I'm using a demo dataset, but the idea is the same:

%# load sample data
laod simpleclass_dataset
input = simpleclassInputs;          %# 2x1000, 2-dimensional points
output = simpleclassTargets;        %# 4x1000, 4 classes

%# split data into training/testing sets
trainInd = 1:500;
testInd = 501:1000;

%# create ANN and initialize network weights
net = newpr(input, output, 3);
net = init(net);
net.trainParam.epochs = 25;        %# max number of iterations

%# learn net weights from training data
net = train(net, input(:,trainInd), output(:,trainInd));

%# predict output of net on testing data
pred = sim(net, input(:,testInd));

%# classification confusion matrix
[err,cm] = confusion(output(:,testInd), pred);

The output is:

err =
     0.075075
cm =
    81     0     0     0
     0    82     0     0
     9     0    52    16
     0     0     0    93

Obviously you will need access to the Neural Network Toolbox.

Sign up to request clarification or add additional context in comments.

14 Comments

Thanks for answering the question...It might help me alot....and the input and outputs are equal. I just copied some inputs and outputs to show you the format of my input n outputs.
net is an object which stores all the network parameters. If you want to recover the actual weights, look into net.IW net.LW net.b for input layer weights, hidden layers weights, and biases respectively. To learn more about the structure of this object, please refer to the documentation of the toolbox..
how did you split the data "trainInd = 1:500; testInd = 501:1000; " I mean- 1:500 - u took it as per your choice or some logic behind it?
that was just a random split (half for training, half for testing); the idea is that if you want to validate the model and get an accurate estimate of the error, you will need some kind of random resamling. For more sophisticated methods, check out CVPARTITION or CROSSVALIND functions. In fact, I believe that the NN-toolbox has some capabilities for doing just that, see help(net.divideFcn)
Implementing a neural network is not a simple task. I suggest you pick up a book and familiarize yourself first (plenty of books on the subject). You can then start by looking at someone else's implementation; search questions here on SO, one comes to mind which implements a simple Perceptron in C: stackoverflow.com/questions/1697243/help-with-perceptron/…
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.