大多数 class 的随机二次抽样
random subsampling of the majority class
我有一个不平衡的数据,我想对大多数 class 执行随机二次抽样,其中每个子样本的大小与少数 class 相同......我认为这已经是在 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,也就是少数class)。
要找到少数 class 的大小,请执行:
>>> np.sum(y == 1)
20
要找到由大多数 class 组成的子集,请执行:
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]
我有一个不平衡的数据,我想对大多数 class 执行随机二次抽样,其中每个子样本的大小与少数 class 相同......我认为这已经是在 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,也就是少数class)。
要找到少数 class 的大小,请执行:
>>> np.sum(y == 1)
20
要找到由大多数 class 组成的子集,请执行:
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]