Borrar filtros
Borrar filtros

Select the same number of samples from each class.

3 visualizaciones (últimos 30 días)
DuckDuck
DuckDuck el 6 de Jul. de 2018
Comentada: DuckDuck el 9 de Jul. de 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 comentario
Jan
Jan el 6 de Jul. de 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?

Iniciar sesión para comentar.

Respuesta aceptada

KSSV
KSSV el 6 de Jul. de 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 comentario
DuckDuck
DuckDuck el 9 de Jul. de 2018
Thanks, actually I was missing randperm part. That's why I asked.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Programming en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by