栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

熊猫的分层样品

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

熊猫的分层样品

我不确定您是否是这个意思:

strats = []for k in range(11):    y_val = k*0.1    dummy_df = your_df[your_df['Y'] == y_val]    stats.append( dummy_df.sample(200) )

这将使虚拟数据帧仅包含所需的

Y
值,然后取样200。

确定,因此您需要不同的块以具有相同的结构。我想这有点难,这是我的做法:

首先,我将得到如下所示的直方图

X1

hist, edges = np.histogram(your_df['X1'], bins=np.linespace(min_x, max_x, nbins))

我们现在有了一个带有

nbins
垃圾箱的直方图。

现在的策略是根据行的值绘制一定数量的行

X1
。我们将从具有更多观察结果的容器中获取更多信息,而从具有更少观察值的容器中获取更少信息,从而
X
保留的结构。

特别是,每个垃圾箱的相对贡献应为:

rel = [float(i) / sum(hist) for i in hist]

这会像

[0.1, 0.2, 0.1, 0.3, 0.3]

如果需要200个样本,则需要绘制:

draws_in_bin = [int(i*200) for i in rel]

现在我们知道从每个箱中抽取多少个观测值:

strats = []for k in range(11):        y_val = k*0.1        #get a dataframe for every value of Y        dummy_df = your_df[your_df['Y'] == y_val]        bin_strat = []        for left_edge, right_edge, n_draws in zip(edges[:-1], edges[1:], draws_in_bin):  bin_df = dummy_df[ (dummy_df['X1']> left_edge)         & (dummy_df['X1']< right_edge) ]  bin_strat.append(bin_df.sample(n_draws))  # this takes the right number of draws out   # of the X1 bin where we currently are  # Note that every element of bin_strat is a dataframe  # with a number of entries that corresponds to the   # structure of draws_in_bin        #        #concatenate the dataframes for every bin and append to the list        strats.append( pd.concat(bin_strat) )


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/662007.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号