Reputation: 195
I've imported some data from a CSV file in matlab. They are time series that are all aligned (the fact that they are time series is not important, just that each column represents a single entity, and the rows are observations for that entity). This give me say, a 2500x50 matrix of doubles called data
and a 1x50 cell array called colheaders
.
What I am trying to do is use the Neural Network toolset to predict each entity (i.e., column) from all the others. The Neural Network tool takes as input a "target" (a single column of the matrix) and "input" (the original matrix but with the same column used as "target" removed from the matrix).
Suppose the entries in colheaders
are of the form Col1, Col2, Col3, etc. I'd like to automate the process of training the model and making predictions for each column of the original matrix so that I have as output a bunch of prediction columns labeled Predicted_Col1, Predicted_Col2, etc.
I think I can figure out the Neural Network part but I just don't know how to begin on the matrix manipulation and cross-referencing to the colheaders
array. This seems like a common thing to want to do so I am guessing that someone knows an easy, straight-forward way to do it that is computationally efficient. Thanks.
Upvotes: 0
Views: 200
Reputation: 2502
Assuming colheaders is a cell of strings and data is your 2500x50 input array, the code below goes through all columns of data, separates target from input, feeds it into a pseudo-code for NN, and gradually builds the predicted matrix while creating custom column headers separately in out_colheaders:
predicted = zeros(size(data));
for i = 1:size(data, 2)
target = data(:, i);
training_input = data;
training_input(:, i) = [];
// assuming the following function returns a column of 2500x1
// given training_input of size 2500x49 and target 2500x1
predicted(:, i) = pseudo_neural(training_input, target);
out_colheaders{i} = ['Predicted_' colheaders{i}];
end
Upvotes: 0