【问题标题】:random subsampling of the majority class多数类的随机子抽样
【发布时间】:2016-04-22 03:04:11
【问题描述】:

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

【问题讨论】:

    标签: python numpy scikit-learn subsampling


    【解决方案1】:

    假设您的数据看起来像是从这段代码生成的:

    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]
    

    【讨论】:

    • 谢谢,但它把它分成训练集,测试集......我只想随机对训练集进行二次抽样,是否仍然可以使用它?我不确定该功能是如何实现的Weka 详细,但我正在寻找相同的
    • 明白了,误解了你的问题。会写一个不同的答案。
    • 抱歉忘了问.. 我怎样才能用 x 和 y 中的旧样本替换新样本 most_x 和 most_y,以便将其与其他类一起用作分类器的输入?跨度>
    • @user2739381 我很乐意看一下,但您能否将其作为单独的问题打开?在 cmets 部分中保持对话非常困难。
    • 非常感谢,我确实在另一个问题中提交了它stackoverflow.com/questions/35106112/…
    猜你喜欢
    • 2021-11-02
    • 1970-01-01
    • 2019-07-18
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 2016-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多