1. 问题背景
假设我手里有个数据集,每个类别的个数是不一样的。现在我想把数据整理成每个类别的个数都是相等的,应该怎么处理?
2. histc函数
matlab里面的histc
函数可以统计每个范围内元素的个数。当“元素范围”为1的时候,就可以统计每个元素出现的个数了。
假设我现在有数据的标签test_label,可以先用histc函数
统计出每个元素出现的个数,然后找出哪个类别的样本个数最少。再把样本比较多的类别多出来的样本去掉。
histc函数原型
numPercClass = histc(test_label, range); %统计每一类的样本总数
比如:test_label 是 [1,1,1,2,2,3], range是[1,2,3]
那么 :numPercClass = [3,2,1]
。
表示:
[1,2) 范围内的元素有三个
[2,3) 范围内的元素有三个
[3,3] 范围内的元素有三个
结果: