Select the same number of samples from each class.
1 回表示 (過去 30 日間)
古いコメントを表示
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 件のコメント
Jan
2018 年 7 月 6 日
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?
採用された回答
KSSV
2018 年 7 月 6 日
% 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
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!