我有一个包含机器学习数据的numpy数组,有超过500000行。在
看起来像这样:
[[1,2,3,4,1,0.3], [1,3,2,4,0,0.9], [3,2,5,4,0,0.8] ...]
前4个值是参数,第5个是类,第6个是0类的概率。在
问题是,数据是强极化的——类0的行比类1的行多20倍。这不利于学习,我需要用类0删除许多行。但是,为了获得最佳结果,我不想随机删除数据,而是这样:
我需要尽可能长地删除索引5(类0的概率)上值最高的行,因为索引4(类)中有相同数量的0和1行。在
如果有比循环更好的解决方案,那就太棒了。在
这有点复杂,所以如果你有更多的问题,尽管问。在
让我们生成一些假数据
把所有的2类行都改为0类行,这样我们(可能)有很多零值。在
^{pr2}$在你的例子中,你使用了一个结构化数组,所以我还有一个结构化数组。。。为了构造一个结构化数组,我们需要一个元组列表,而不是一个列表列表
我们可以根据结构数组的字段序列对其进行排序
一班的记录,有多少
连接部分0类记录和
b
您可以检查最后一个表达式的输出是否正是您所要求的。在
或者至少这是我认为你要求的。。。在
要使两个类具有相同数量的元素,可以从多数类中移除概率最高的元素,方法如下:
把你的矩阵叫做D,那么你的结果就是R
解释
参考文献
假设
in[:, 4] = (in[:, 5] < t).astype(int)
,其中t
是某个阈值值(可能是0.5
):否则:
^{pr2}$相关问题 更多 >
编程相关推荐