python中数据的随机采样

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中数据的随机采样相关的知识,希望对你有一定的参考价值。

我有一个包含多列的数据框,我需要从具有更大权重的该数据中重新采样一个类别。我认为np.random.choice应该有效,但不确定如何实现。以下是示例数据,我想从中进行随机采样,但希望有70%的概率获得昂贵的房屋(基于Expensive_home列,值= 1)和30%的概率使Expensive_home = 0。如何创建重新采样的数据文件?谢谢!

ID  Lot_Area    Year_Built  Full_Bath   Bedroom Sale_Price  Expensive_home
1   31770   1960    1   3   215000  0
2   11622   1961    1   2   105000  0
3   5389    1995    2   2   236500  0
4   8402    1998    2   3   180400  0
5   10176   1990    1   2   171500  0
6   6820    1985    1   1   212000  0
7   53504   2003    3   4   538000  1
8   12134   1988    2   4   164000  0
9   11394   2010    1   1   394432  1
10  19138   1951    1   2   141000  0
11  13175   1978    2   3   210000  0
12  11751   1977    2   3   190000  0
13  10625   1974    2   3   170000  0
14  7500    2000    2   3   216000  0
15  11241   1970    1   2   149000  0
16  2280    1978    2   3   146000  0
17  12858   2009    2   3   376162  1
18  12883   2009    2   3   290941  0
19  12182   2005    2   3   220000  0
20  11520   2005    2   3   275000  0

相似的数据文件,但在最后一列中有更多随机选择的1

答案

要创建相同长度但允许昂贵的数据框,使其有较高的机会被选中并允许替换,请使用:

weights = df['Expensive_home'].replace({0: 30, 1: 70})
df1 = df.sample(len(df), replace=True, weights=weights)

要创建一个包含所有昂贵的数据框,然后再包含30%的非昂贵数据框,您可以这样做:

expensive = df['Expensive_home'].astype(bool)
df2 = pd.concat([df[expensive], df[~expensive].sample(frac=0.3)])

以上是关于python中数据的随机采样的主要内容,如果未能解决你的问题,请参考以下文章

从 Python 中的单纯形中随机均匀采样

😆 机器学习采样方法大全

自助法随机采样过程中,对n个样本进行n次有放回的随机采样,当n趋向于无穷大时,最终有多少数据从未被选择过?

随机过采样与随机欠采样 代码

随机过采样与随机欠采样 代码

python中beta二项分布的有效采样