我的数据不平衡,我想对多数类进行随机子采样,其中每个子样本的大小都与少数类相同...我认为这已经在Weka和Matlab上实现了,这在sklearn上?

最佳答案

假设您的数据看起来像是从此代码生成的内容:

import numpy as np

x = np.random.randn(100, 3)
y = np.array([int(i % 5 == 0) for i in range(100)])


y的1/5仅为1,这是少数类)。

要查找少数群体的人数,请执行以下操作:

>>> np.sum(y == 1)
20


要查找包含多数类的子集,请执行以下操作:

majority_x, majority_y = x[y == 0, :], y[y == 0]


要查找大小为20的随机子集,请执行以下操作:

inds = np.random.choice(range(majority_x.shape[0]), 20)


其次是

majority_x[inds, :]




majority_y[inds]

关于python - 多数类别的随机子采样,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34829381/

10-12 22:07