【问题标题】:"Upsampling data" of data in PythonPython中数据的“上采样数据”
【发布时间】:2018-12-27 11:44:45
【问题描述】:

我对 Python 很陌生,对数据科学也很陌生。

我有一个大型数据集,我一直在使用监督机器学习(CART 和 scikit-learn)进行分类。在大多数情况下,我使用 pandas 数据框来对数据进行操作。数据如下所示:

| F00 F01 F02 F03 ... C0 |
| ... .. .. ... ... .....|
| FN0 FN1 FN2 FN3... CN  |

其中 Fij 是第 i 行的第 j 个特征,Ck 是该行/实例的真实类。

问题是 6 个类中的一个具有更大比例的训练样本。我查看了上采样,但这似乎是指(不出所料)随机采样数据的情况,就像您对非常大的数据集所做的那样。

我想要的是放大而不是上采样——也就是说,复制少数类的替换随机实例,将它们添加到数据集中,直到所有类的大小匹配。

到目前为止,我没有运气使用 pandas 来做这件事,我想知道你是否能提供帮助?

【问题讨论】:

  • 欢迎来到 StackOverflow。请提供一个小的示例数据集以使用 - 而不仅仅是一个正式的规范 - 以及预期的输出。这使得提供具体解决方案变得更加容易。即使您的实际数据非常大,您仍然应该能够生成minimal reproducible example 来证明您遇到的问题。
  • +1 表示上述评论;您正在寻找的是类不平衡的技术(从谷歌搜索开始)-idownvotedbecau.se/noattemptidownvotedbecau.se/nocode
  • 谢谢!对不起,会在以后的帖子中这样做
  • 为什么不在这里进行更改而不是等待以后的帖子?您可以编辑原始帖子。
  • 说实话,因为放网上的不是我的数据,但我明白为什么要放它

标签: python pandas machine-learning scikit-learn data-science


【解决方案1】:

这里是原提问者:

对于任何感兴趣的人,我使用 imblearn 包做了以下操作:

from imblearn.over_sampling import RandomOverSampler, SMOTE, ADASY

def organize_data(data, upsample=False, upmethod = None): # entire organizing, cleaning data function

...

if upsample:
        upsampler = upmethod()
        features, true_class = upsampler.fit_sample(features, true_class)

只是将 RandomOverSampler 用作扩展我的少数类的一种天真的方法(与我的数据相符)。

【讨论】:

    【解决方案2】:

    如果我理解正确,您希望处理“从不平衡的数据集中学习”的问题。

    有很多方法可以解决这个问题(article 概述了解决这个问题的几种方法)

    相信this会帮你解决这个问题。

    【讨论】:

      猜你喜欢
      • 2018-02-01
      • 1970-01-01
      • 2020-07-04
      • 2017-12-02
      • 2017-01-27
      • 2014-12-28
      • 2020-12-28
      • 1970-01-01
      • 2022-11-15
      相关资源
      最近更新 更多