【问题标题】:Sampling data such that distribution is preserved采样数据以保留分布
【发布时间】:2018-10-04 22:40:56
【问题描述】:

vsample_data = credit_card.sample(n=100, replace='False')

打印(vsample_data)

在这里,我试图从数据集中抽取 100 个数据点,但无法获得正确的样本数据,从而保留信用卡欺诈数据集的原始分布,即 Class-0(非欺诈)和Class-1(欺诈)。

【问题讨论】:

  • 不正确是什么意思?你得到了什么结果?
  • 看看使用sklearn.train_test_split 和stratify=Yscikit-learn.org/stable/modules/generated/…
  • 我只在那里获得了有时为 0 类的随机样本,并且很少出现 1 类数据点
  • 是否有任何一种衬里,以便我得到与原始数据具有相同分布的两个类

标签: python-3.x pandas


【解决方案1】:

增加您的样本量 (n>>100)。您从中采样的数据本身就是一个随机样本。通过随机选择创建子集本身就是一个随机过程。如果其中一个数据类的频率较低,那么问题在于您的样本量 (100) 太低。

如果您将替换标志更改为“True”并重复采样,则您正在执行一种称为引导的操作。假设完整的数据集代表真实的人口分布,此重采样将为您提供示例,说明对于较低的 n (n=100) 值可能会获得什么样的测量结果。

另一种选择是上面一些人建议的分层策略。但是,当您这样做时,您不会创建随机子集,并且分布假设现在已内置到您的较小数据集中。请注意,您只能在查看整个数据集以确定其分布后才能实现此目的。可能不是你想要的。

如果您要根据数据创建(监督)训练数据集,您可以重复代表性不足的数据来控制偏差。

【讨论】:

    猜你喜欢
    • 2019-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-10
    • 1970-01-01
    • 2019-08-17
    • 2020-10-07
    • 1970-01-01
    相关资源
    最近更新 更多