I did't find how to select rows for same class randomly.

Can I get some ideas to make a code?

2 views (last 30 days)

Show older comments

Hello.

I have a data (90 x 2857), column 2857 is a label(class).

I'm using table function.

I want to read rows of the same class from table, select N rows, calculate the average.

Could you giva an idea to make the code?

data = readtable("outfile.csv");

data.Properties.VariableNames{end} = 'label';

data{:,1:end-1} = normalize(data{:,1:end-1},1); % I belive this should be "1"

data = sortrows(data,'label'); % The data are sorted by the lables

Ameer Hamza
on 2 Apr 2020

Edited: Ameer Hamza
on 2 Apr 2020

Try this

data = csvread('outfile.csv');

values = data(:,1:end-1);

labels = data(:,end);

avg = splitapply(@(x) mean(x,1), values, labels+1);

The avg matrix is 10x2856, each row corresponds to mean value of one class.

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!