【问题标题】:Sample Dataset into equal positive and negative samples将数据集采样成相等的正负样本
【发布时间】:2018-01-21 01:03:55
【问题描述】:

我正在尝试以内存有效的方式获取大量数据集的样本,其中 +ve 样本的数量 = -ve 样本的数量。

数据的比例是 4 : 2 +ve 到 -ve 所以我试图制作一个样本,其中数据的比例是 2:2

    A   B   C class   
0   0   1   2   0
1   3   4   5   0
2   6   7   8   1
3   9   10  11  1
4   12  13  14  1
5   15  16  17  1

期望的输出:

    A   B   C   class   
0   0   1   2   0
1   3   4   5   0
2   6   7   8   1
3   9   10  11  1

我尝试使用 python 代码使用 pandas value_counts func 对其进行采样,但它的内存效率不高。

【问题讨论】:

    标签: python pandas dataframe machine-learning


    【解决方案1】:
    positive=data[data['class']==0]
    negative=data[data['class']==1].sample(n=positive.shape[0])
    final=pd.concat([positive,negative])
    

    positive_len=np.sum(data['class']==0) #gives the number of rows with class=0
    final=data.sort_values('class')[:2*positive_len] #sort values. now rows with class 0 are on the top, rows with class 1 are on the bottom. pick top 2* length of positive.
    

    【讨论】:

    • 亲爱的山姆,这会将数据分成相等的部分,但整个数据必须是内存才能工作..
    • @cᴏʟᴅsᴘᴇᴇᴅ 是的,我同意,但是....由于内存限制,我很难操纵数据和创建临时变量,所以到目前为止,我认为分块(在导入 csv 时)是其中之一可能的解决方案,我正在研究它,一旦我有解决方案,我会更新问题,同时我也在寻找其他可能的线索......
    • @Ajay Pandas 本身就是为内存操作而设计的。有几种工具(通常结合使用)用于内存不足操作:HDF5、pyTables、dask.dataframe。我还建议在熊猫数据框中存储整数数组效率不高。 Numpy 数组应该提供更好的性能。
    猜你喜欢
    • 1970-01-01
    • 2011-09-27
    • 2018-03-17
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-18
    • 2014-03-23
    相关资源
    最近更新 更多