首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是分层引导?

什么是分层引导?
EN

Stack Overflow用户
提问于 2016-02-10 23:44:15
回答 2查看 7.9K关注 0票数 10

我已经学会了自我引导和分层。但是什么是分层的引导呢?它是如何工作的呢?

假设我们有一个n个实例(观察)的数据集,m是类的数量。我应该如何划分数据集,培训和测试的百分比是多少?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-10 23:52:36

您将数据集拆分为每个类。然后,你从每个子群体中独立抽取样本。您从一个子种群中抽取的实例数量应该与其比例相对。

代码语言:javascript
复制
 data
 d(i) <- { x in data | class(x) =i }
 for each class
    for j = 0..samplesize*(size(d(i))/size(data))
       sample(i) <- draw element from d(i)
 sample <- U sample(i)

如果从具有类{'a', 'a', 'a', 'a', 'a', 'a', 'b', 'b'}的dataset中取样四个元素,则此过程确保分层示例中至少包含类b的一个元素。

票数 7
EN

Stack Overflow用户

发布于 2021-06-04 03:47:07

只需在python中实现这一点,我将在这里发布我的当前方法,以防其他人对此感兴趣。

函数为原始Dataframe创建索引以创建分层引导示例。

我选择在原始的Dataframe中遍历所有相关的层簇,检索每个层中相关行的索引,并随机(用替换)从这个层所包含的层中抽取相同数量的样本。

反过来,随机绘制的索引可以组合成一个列表(最终应该具有与原始Dataframe相同的长度)。

代码语言:javascript
复制
import pandas as pd
from random import choices

def provide_stratified_bootstap_sample_indices(bs_sample):

    strata = bs_sample.loc[:, "STRATIFICATION_VARIABLE"].value_counts()
    bs_index_list_stratified = []

    for idx_stratum_var, n_stratum_var in strata.iteritems():

        data_index_stratum = list(bs_sample[bs_sample["STRATIFICATION_VARIABLE"] == idx_stratum_var[0]].index)
        bs_index_list_stratified.extend(choices(data_index_stratum , k = len(data_index_stratum )))

    return bs_index_list_stratified

然后是实际的引导循环

(例如10k次):

代码语言:javascript
复制
k=10000

for i in range(k):
    bs_sample = DATA_original.copy()

    bs_index_list_stratified = provide_stratified_bootstap_sample_indices(bs_sample)
    bs_sample = bs_sample.loc[bs_index_list_stratified , :]

    # process data with some statistical operation as required and save results as required for each iteration
    RESULTS = FUNCTION_X(bs_sample)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35328198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档