Newer
Older
masterarbeit / usedMcode / balanceClasses.m
@JPH JPH on 21 Jul 2016 800 bytes restructure
function [trainClasses,trainData]=balanceClasses(trainClasses,trainData,maxPerClass,noClasses)
%     if maxPerClass > min(histcounts(trainClasses,noClasses))
%         maxPerClass=min(histcounts(trainClasses));
%         warning('not enough Data per Class; set maxPerClass to %i', maxPerClass);
%     end
    i=1;
    delPerClass=histcounts(trainClasses,noClasses)-maxPerClass;
    delIndex=zeros(sum(delPerClass),1);
    while sum(delPerClass)>0
        r=fix(size(trainClasses,1)*rand(1)+1);
        if delPerClass(trainClasses(r)+1)>0 && all(delIndex~=r)
            delIndex(i)=r;
            i=i+1;
            delPerClass(trainClasses(r)+1)=delPerClass(trainClasses(r)+1)-1;
        end
    end
    trainClasses(delIndex)=[];
    trainData(delIndex,:)=[];
    assert(size(trainClasses,1)>0)
end