Python中数据的“上采样数据”
Posted
技术标签:
【中文标题】Python中数据的“上采样数据”【英文标题】:"Upsampling data" of data in Python 【发布时间】: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 来做这件事,我想知道你是否能提供帮助?
【问题讨论】:
欢迎来到 ***。请提供一个小的示例数据集以使用 - 而不仅仅是一个正式的规范 - 以及预期的输出。这使得提供具体解决方案变得更加容易。即使您的实际数据非常大,您仍然应该能够生成minimal reproducible example 来证明您遇到的问题。 +1 表示上述评论;您正在寻找的是类不平衡的技术(从谷歌搜索开始)-idownvotedbecau.se/noattempt,idownvotedbecau.se/nocode 谢谢!对不起,会在以后的帖子中这样做 为什么不在这里进行更改而不是等待以后的帖子?您可以编辑原始帖子。 说实话,因为放网上的不是我的数据,但我明白为什么要放它 【参考方案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会帮你解决这个问题。
【讨论】:
以上是关于Python中数据的“上采样数据”的主要内容,如果未能解决你的问题,请参考以下文章