Select the same number of samples from each class.

1 vue (au cours des 30 derniers jours)
DuckDuck
DuckDuck le 6 Juil 2018
Commenté : DuckDuck le 9 Juil 2018
Say I have a table with 2 columns, one column stores the value the other the class of the value. The classes are imbalanced. I want to randomly select the same number of samples from each class. Is there any easy way to do it in Matlab.
  1 commentaire
Jan
Jan le 6 Juil 2018
Please post some Matlab code, which creates a small data set. I cannot guess, how you store "values" and "classes". What does "imbalanced" mean here?

Connectez-vous pour commenter.

Réponse acceptée

KSSV
KSSV le 6 Juil 2018
% create some random data for demo
K = 3 ; % number of groups
N = 5000 ;
x = rand(N,1) ;
y = rand(N,1) ;
% apply kmeans to divide points into 3 groups
idx = kmeans([x,y],K) ;
A = [x y idx] ; % the data with three classes
% Get number of data in each class
ng1 = nnz(idx==1) ; % number of points in group 1
ng2 = nnz(idx==2) ; % number of points in group 1
ng3 = nnz(idx==3) ; % number of points in group 1
% select data for each group
N = min([ng1 ng2 ng3]) ;
iwant = cell(K,1) ;
for i = 1:K
G=A(A(:,3)==i,:) ; % group data
idx = randperm(size(G,1),N) ;
iwant{i} = G(idx) ;
end
  1 commentaire
DuckDuck
DuckDuck le 9 Juil 2018
Thanks, actually I was missing randperm part. That's why I asked.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Tags

Produits


Version

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by