Python中的数据“上采样数据”

时间:2018-07-19 10:58:26

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

我是Python的新手,也是数据科学的新手。

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

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

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

问题是6个班级之一的培训样本所占比例更大。我已经查找了上采样,但这似乎是指(毫无疑问)随机采样数据的情况,就像处理超大型数据集一样。

我想要的是高档而不是上采样-也就是说,用少数类的替换随机实例进行复制,然后将它们添加到数据集中,直到所有类的大小匹配为止。

到目前为止,我还没有用熊猫做这种事,我想知道您是否能够提供帮助?

2 个答案:

答案 0 :(得分:0)

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

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

我相信this将帮助您解决这个问题。

答案 1 :(得分:0)

原始询问者在这里:

对于有兴趣的人,我使用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作为天真的方法来扩展我的少数族裔类别(适合我的数据)。